Wie kann ich eine PDF-Datei in Mac OS über die Befehlszeile vollständig reduzieren?

16

Ich benutze Mac OS X Snow Leopard. Ich habe ein PDF mit Formularfeldern, Anmerkungen und Stempeln. Ich möchte diese PDF-Datei einfrieren (oder "reduzieren"), damit die Formularfelder nicht geändert werden können und die Anmerkungen / Stempel nicht mehr bearbeitet werden können. Da ich tatsächlich viele dieser PDFs habe, möchte ich dies automatisch über die Befehlszeile tun.

Einige Dinge, die ich mit ihrem Erfolg ausprobiert / in Betracht gezogen habe:

  • In Vorschau öffnen und in Datei drucken. Dadurch wird eine völlig flache PDF-Datei erstellt, ohne die Dateigröße zu ändern. Die einzige Möglichkeit zur Automatisierung scheint jedoch darin zu bestehen, ein klobiges, auf der Benutzeroberfläche basierendes AppleScript zu schreiben , das ich zu vermeiden versucht habe.
  • Öffnen Sie in Acrobat Pro und verwenden Sie zum Reduzieren eine JavaScript-Funktion . Auch hier bin ich mir nicht sicher, wie ich dies in der Befehlszeile automatisieren soll.
  • Verwenden Sie pdftkmit der flattenOption. Dies glättet jedoch nur Formularfelder, keine Stempel und andere Anmerkungen.
  • Verwenden Sie, cupsfilterdie PDF aus vielen Dateiformaten erstellen können. So werden pdftknur die Formularfelder abgeflacht.
  • Verwenden Sie cups-pdfdiese Option, um den Druckserver des Mac anzuschließen und eine PDF-Datei zu speichern, anstatt zu drucken. Ich habe die Macports-Version verwendet . Die resultierende Datei ist flach, aber riesig. Ich habe es mit einer 8MB-Datei versucht. das abgeflachte PDF war 358MB! Vielleicht kann dies mit einem Ghostscript-Aufruf wie in Ubuntu kombiniert werden. Tipp: So reduzieren Sie die PDF-Dateigröße über die Befehlszeile .

Alle anderen Vorschläge würden geschätzt.

Matthew Leingang
quelle
1
Automator.app verfügt über einige eingebaute PDF-Verarbeitungsoptionen. Vielleicht kann einer von ihnen direkt helfen oder mit einer der oben genannten Aktionen kombiniert werden.
Kassym Dorsel
Können Sie ein PDF-Beispieldokument bereitstellen, das diese Elemente enthält?
Daniel Beck
Ich glaube schon. Im Moment sind alle meine Samples Studentenquiz, also muss ich etwas verspotten.
Matthew Leingang

Antworten:

11

Versuchen Sie es mit pdf2psund ps2pdfnacheinander. Es ist etwas umständlich, hat mir aber geholfen, mein 30-MB-Dokument auf 17 MB zu reduzieren. Nicht so sehr, wie ich es mir gewünscht hätte, aber immer noch besser. Ich habe diese Idee von einem Freund erhalten, der diese Methode verwendet hat, um die Kennwortberechtigungen für ein PDF-Dokument zu entfernen.

pdf2ps your_pdf_file.pdf your_pdf_file.ps
ps2pdf your_pdf_file.ps your_pdf_file_from_ps.pdf

Ich hoffe, das hilft!

Olga Botvinnik
quelle
3
GhostScript FTW! Ich habe es auf einen Einzeiler nach unten durch ein Rohr mit: pdf2ps file.pdf - | ps2pdf - file_flat.pdf. Die Datei ist von 300K auf 500K gestiegen, was eine große prozentuale Zunahme darstellt, aber nichts anderes als die 4400% ige Zunahme der erzielten cups-pdfMethode.
Matthew Leingang
Eigentlich hatte ich besseres Glück mit pdf2ps -q -sOutputFile=- file.pdf | ps2pdf - file_flat.pdf.
Matthew Leingang
4
Beachten Sie, dass Sie auf einem Mac Ghostscript installieren können, um die oben genannten Befehle über Homebrew mit zur Verfügung zu stellen brew install ghostscript.
Nick
5

Also das ist, was ich in letzter Zeit verwendet habe. Ich denke, funktionell macht es das gleiche wie pdf2ps file.pdf - | ps2pdf - file_flat.pdf, aber es schien für mich besser zu funktionieren.

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -sOutputFile=<newfile> <oldfile>
Matthew Leingang
quelle
Die ps2pdf-Lösungen sind für mich gescheitert. Dies funktionierte, indem anscheinend die Schriften im PDF neu indiziert wurden.
ℝaphink
Keiner dieser Befehle wird abgeflacht. Sie können die zugrunde liegenden Ebenen mithilfe der Vorschau kopieren. Der ursprüngliche Inhalt wird angezeigt.
Alain O'Dea
1

Es ist möglicherweise nicht optional, aber haben Sie überlegt, cups-pdf mit pdftk oder cupsfilter zu verketten? Wie Sie bereits erwähnt haben, wird cups-pdf eine flache PDF-Datei erstellen und diese dann über pdftk oder cupsfilter auf eine akzeptable Größe bringen?

Alternativ werfen /System/Library/Printers/Libraries/convert Sie einen Blick auf Sie sollten in der Lage sein, etwas zu tun

/System/Library/Printers/Libraries/convert -f input_file.pdf -o output_file.pdf -j "application/pdf"
Mxx
quelle
Mein Mac hat nicht /System/Library/Printers/Libraries/convert. Ich habe es versucht cupsfilter. Beim Konvertieren von PDF nach PDF wurden keine Änderungen an der Datei vorgenommen. Beim Konvertieren von PDF nach PS und dann nach PDF gingen die Anmerkungen verloren.
Matthew Leingang
1

WARNUNG: gs und pdf2ps | ps2pdf reduzieren PDFs NICHT!

Wenn Sie gs oder pdf2ps gefolgt von ps2pdf verwenden, erhalten Sie ein mehrschichtiges PDF mit dem Inhalt unter Anmerkungen in Originalform . Sie können diesen Fehler in der Vorschau überprüfen, indem Sie Alles auswählen, dann Kopieren und dann In ein TextEdit-Fenster einfügen (im Rich-Text-Modus). Sie sehen den Text oder die Grafiken beispielsweise unter Redaktionsanmerkungen. Dies ist eindeutig sehr schlecht, wenn Sie legal benötigen, dass dieser Inhalt aus der Ausgabe entfernt wird.

Eine funktionierende Lösung

ImageMagick kann mit dem folgenden Befehl ein konfigurierbares, mehrseitiges, einschichtiges, abgeflachtes PDF mit Rastern für jede Seite erstellen:

convert -density 150 document_original.pdf document_flat.pdf

Dieser Befehl rastert document_original.pdf, erstellt ein pixelbasiertes Bild jeder Seite mit 150 DPI und gibt das Ergebnis als document_flat.pdf aus.

Ein Hinweis zur Bildqualität

Aufgrund der Rasterung wird ein nicht skalierbares PDF-Dokument (Zoom und es wird angezeigt, dass der Text oder die ursprünglichen Vektorgrafiken pixeliert sind) erstellt. Es wird wahrscheinlich eine größere Dateigröße haben, es sei denn, das Original enthält sehr komplexe Vektorinhalte wie Punktstreudiagramme.

Durch Ändern der Dichte können Sie eine größere Datei gegen eine Ausgabe mit höherer Auflösung eintauschen.

Der gesamte Text wird in jedem Seitenbild in rohe Pixel umgewandelt. Text- und Vektordiagramme leiden am meisten. Experimentieren Sie mit dem DPI, bis Sie brauchbare Ausgabedateien erhalten.

Alain O'Dea
quelle
1
Vielen Dank, dass Sie diese Antwort beigesteuert haben. Vor 5 Jahren funktionierte die Lösung, die ich schrieb, für mich. Aber ich werde Ihre Antwort das nächste Mal versuchen, wenn ich dies tun muss (eigentlich sehr bald).
Matthew Leingang
Das macht Sinn. Ich stelle mir vor, dass sich das Verhalten von Ghostscript in Bezug auf das Reduzieren von Anmerkungen geändert hat. Ich habe versucht, -PreserveAnnots = false hinzuzufügen, und es hat immer noch nicht funktioniert. Konvertieren Sie unter der Haube mit Ghostscript für die PDF-Verarbeitung. Ich hätte gerne etwas, das genau das tut, was Acrobat tut: Es behält die Anmerkungen bei, entfernt den Inhalt dahinter und bewahrt nicht abgedeckte Vektorgrafiken. Das Document Cloud-Teil mit dem neuen Acrobat bereitet mir allerdings große Sorgen, wenn ich es für vertrauliche Daten verwende.
Alain O'Dea
0

Applescript ist wahrscheinlich der beste / schnellste Weg zur Kommandozeile. Sobald es funktioniert, können Sie es als Anwendung speichern und in Ihrer Befehlsshell einen Alias ​​erstellen, um es auszuführen. Danach geben Sie einfach Ihren Alias ​​in die Befehlszeile ein.

JRobert
quelle
Aber wie lässt sich eine PDF-Datei in AppleScript am einfachsten reduzieren? Ich möchte lieber kein Skript für die Benutzeroberfläche erstellen, um das Drucken in eine Datei zu imitieren. Das scheint klobig und langsam.
Matthew Leingang