Batch-Größenänderung und Komprimierung von PDF-Dateien

15

Ich brauche eine Möglichkeit, Stapel von PDF-Dateien zu verkleinern und zu komprimieren. Ich würde es vorziehen, dies unter Windows zu tun, aber Linux wäre in Ordnung, wenn es einen reibungsloseren Workflow bedeuten würde.

Ich weiß, dass es Programme wie NitroPDF und Acrobat gibt, mit denen Sie dies erreichen können, aber ich befürchte, dass dies Datei für Datei erfolgen muss. Diese Programme sind auch nicht billig und ich würde es vorziehen, sie nicht zu kaufen, nur damit ich ein oder zwei Funktionen nutzen kann.

Hintergrundinfo: Mit CamScanner digitalisiere ich Belege und Rechnungen für die Kontoerfassung (FreeAgent). CamScanner-PDFs haben alle das Format A4, und mehrseitige PDFs überschreiten häufig die 2-MB-Grenze für Anhänge.

Stan
quelle

Antworten:

15

Ich schlage hier ein Befehlszeilentool vor, das sich problemlos mit Schleifen in integrierten Skriptsprachen in Windows, Linux, OS X usw. stapeln lässt.


ImageMagick unterstützt PDFs und bietet resizemit dem Konvertierungstool eine Option . Ich habe es nie persönlich benutzt, aber Sie können versuchen, damit herumzuspielen.

Sie können auch die Verwendung compressOption (es gibt ein Beispiel hier ):

PDF drehen

$ convert -rotate 270 -density 300x300 -compress lzw in.pdf out.pdf

Dies setzt ein TIFF-unterstütztes PDF voraus. Der Dichteparameter ist wichtig, da ImageMagick das Bild sonst (aus irgendeinem Grund) heruntermustert. Durch Hinzufügen der Komprimierungsoption wird die Gesamtgröße der PDF-Datei kleiner gehalten, ohne dass die Qualität beeinträchtigt wird.

Für mehrseitige PDFs möchten Sie möglicherweise Folgendes verwenden pdftkund dann mogrifyvon ImageMagick verwenden, um jede Seite an Ort und Stelle zu konvertieren:

$ pdftk in.pdf burst
$ mogrify -rotate 270 -density 300x300 -compress lzw pg_*.pdf
$ pdftk pg*.pdf cat output out.pdf
$ rm pg*.pdf


Um PDF-Dateien mit ImageMagick konvertieren zu können, muss GhostScript installiert sein.


ImageMagick kann mehrseitige PDFs konvertieren. Während mogrifyan Ort und Stelle konvertieren, empfehle ich Sie verwenden , convertso dass Sie die Originale im Fall eines Unfalls zu halten.


Ich habe einige Tests an Ihrem bereitgestellten PDF-Beispiel durchgeführt. Das hat bei mir ganz gut geklappt:

convert -density 200 -compress jpeg -quality 20 test.pdf test2.pdf

Die Standardeinstellung für die Dichte ist 72DPI. Durch eine höhere Einstellung erhalten wir eine höhere Auflösung und damit eine akzeptable Qualität. Es sah in Ordnung aus 150und war etwas kleiner, aber wenn Sie für eine Reihe von PDFs sorgen möchten, 200sollte es funktionieren.

JPEG - Komprimierung sollte entweder automatisch auf eine Ebene oder Standard wählt 92auf einer Skala von 1zu 100mit 100dem besten. Wenn Sie es auf 20einstellen, sieht es fast so gut aus wie das Original (etwas unschärfer und der kleine Text unten ist etwas schwer zu lesen, aber ursprünglich war es trotzdem).

Mit diesen Optionen können Sie Ihr 1,7-MB- Sample auf 0,5 MB reduzieren , während es lesbar bleibt . Sie können ein wenig experimentieren.

Wenn Sie eine kleinere Größe wünschen (sowohl der Datei als auch des Bildes / PDF), können Sie -resize #%z -resize 75%. In Ihrem Beispiel-PDF ist das kleine Druckbild am unteren Rand jedoch so gut wie unleserlich.

Wenn Sie immer noch wenig Speicherplatz haben, insbesondere für mehrseitige PDF-Dateien, können Sie die Dateien durch Hinzufügen zu einem ZIP-Archiv (oder einem anderen Archiv) weiter komprimieren. Dadurch wurde die Dateigröße für dieses Test-PDF auf 0,43 MB gesenkt (eine Reduzierung der JPEG-Komprimierungsqualität hat einen viel drastischeren Effekt). Sie können die PDF-Datei auch in Seiten mit aufteilenpdftk , wie @glallen in seiner Bearbeitung vorgeschlagen hat, oder das Archiv aufteilen und am anderen Ende neu kombinieren.

2MB ist auch ein eher kleines Limit für Anhänge. Vielleicht möchten Sie einen Blick auf andere E-Mail-Anbieter werfen. Aus dem Speicher stellt GMail über 10 MB pro E-Mail bereit.

Diese und weitere Optionen sind auf ihrer Website vollständig dokumentiert .

Bob
quelle
Das scheint ein ausgezeichneter Ansatz zu sein, aber ich glaube nicht, dass meine PDFs TIFF-unterstützt sind. CamScanner nimmt zuerst JPEG-Fotos auf und konvertiert sie dann zum Export in PDF. Das Verarbeiten dieser PDFs scheint sie, wie der Blog-Post angibt, unabhängig von der Komprimierung herunterzusampeln. Das Konvertieren von PDF zu TIFF und dann zurück in PDF scheint die Qualität zu bewahren, erhöht jedoch die Dateigröße und verfälscht die Seitengröße und -dichte.
Stan
@ Paganompu Wie ich verstehe, möchten Sie die Dateigröße reduzieren. Wie wäre es mit Komprimieren als JPEG? Wie ist es resizegelaufen? Haben Sie eine (nicht vertrauliche) Beispieldatei, mit der wir spielen könnten? Ist das Downsampling akzeptabel?
Bob
JPEG wäre in Ordnung gewesen, aber ich muss mehrseitige Dokumente hochladen und kann nur einen Anhang pro Kontoeintrag haben. Downsampling ist schwer: das Testdokument ist nicht lesbar nach der Konvertierung mit verlustfreier Komprimierung.
Stan
@paganompu Ich habe selbst ein wenig experimentiert und die Antwort mit einem funktionierenden Befehl aktualisiert. Sehen Sie hier für einen Test auf Ihre Datei.
Bob
Dieser Befehl wirkt wie ein Zauber. Scheint, als ob mein "Downsampling" auf das Weglassen zurückzuführen war density... Ich schwöre, ich kann Anweisungen lesen und befolgen! Etwas verlegen: S Vielen Dank, dass Sie sich die Zeit genommen haben, mir zu helfen. Bob
Stan
19

Daher wird convertImageMagick gerasterte PDF-Dateien erstellen, und viele Menschen sind daran interessiert, Vektorgrafiken und Text unverändert zu lassen, damit nur eingebettete Bilder komprimiert werden. Eine gute Alternative zur Komprimierung ist die Verwendung gsvon Paketen ghostscriptmit folgenden Verwendungsbeispielen:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf

im obigen Befehlsparameter: -dPDFSETTINGS=/ebookist wichtig. Es kann 3 Werte haben:

-dPDFSETTINGS=/screen   (screen-view-only quality, 72 dpi images)
-dPDFSETTINGS=/ebook    (low quality, 150 dpi images)
-dPDFSETTINGS=/printer  (high quality, 300 dpi images)
-dPDFSETTINGS=/prepress (high quality, color preserving, 300 dpi imgs)
-dPDFSETTINGS=/default  (almost identical to /screen)
aNeutrino
quelle