Es muss nicht unbedingt CMD sein, aber ich würde es bevorzugen. Es muss allerdings kostenlos sein.
Ich habe viele verschiedene ausprobiert, aber alle scheinen einige Bitdaten in den PDFs zu optimieren und berühren nicht einmal die Bildkomprimierung, die ich anstrebe, da dies der Hauptgrund für die Größe meiner aus Google Docs generierten PDFs ist.
Ich bin mir nicht sicher, was Sie genau mit "Komprimierungsoptimierer" meinen:
Möglicherweise möchten Sie jedes einzelne PDF-Objekt, das für die gerenderten Seiten relevant sein könnte, "wie es ist" belassen und nur die höchstmögliche verlustfreie Komprimierung auf Objektströme anwenden, die noch nicht komprimiert sind oder die mit einem nicht komprimierten/codierten so effizientes Komprimierungsverfahren.
Möglicherweise sind Sie bereit, zusätzlich zu den unter "1." aufgeführten Optionen einige andere Änderungen an der PDF-Datei zu akzeptieren:
Eine ausreichend ausgeklügelte, lange Ghostscript-Befehlszeile kann dabei helfen. Es wird eine PDF-zu-PDF-Konvertierung durchgeführt:
gs \
-o smaller-downsampled+gray.pdf \
-sDEVICE=pdfwrite \
-dCompressPages=true \
-dCompressFonts=true \
-dDownsampleColorImages=true \
-dDownsampleGrayImages=true \
-dDownsampleMonoImages=true \
-dColorImageResolution=72 \
-dGrayImageResolution=72 \
-dMonoImageResolution=72 \
-dColorImageDownsampleThreshold=1.0 \
-dGrayImageDownsampleThreshold=1.0 \
-dMonoImageDownsampleThreshold=1.0 \
-dProcessColorModel=/DeviceGray \
-dColorConversionStrategy=/Gray \
-dColorConversionStrategyForImages=/Gray \
-dCompatibilityLevel=1.4 \
-dEmbedAllFonts=false \
-c ".setpdfwrite <</AlwaysEmbed [ ] /NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats] /ColorImageFilter /DCTEncode /GrayImageFilter /DCTEncode /MonoImageFilter /CCITTFaxEncode /OutputICCProfile (None)>> setdistillerparams" \
-f big.pdf
(Wechseln Sie unter Windows gs
zu gswin32c.exe
oder gswin64c.exe
, und ändern Sie alle Zeilenfortsetzungsmarkierungen \
zu ^
...) Der obige Befehl ändert Folgendes:
/DCTEncode
).Mein ursprünglicher Beispielbefehl hatte einen Tippfehler. Es hatte diese Zeilen enthalten, die falsch sind :
-sProcessColorModel=/DeviceGray \ -sColorConversionStrategy=/Gray \ -sColorConversionStrategyForImages=/Gray \
Es gibt zwei verschiedene Möglichkeiten, diese Optionen korrekt auszudrücken :
Verwendung -d
für diese Parameter. In diesem Fall müssen Schrägstriche/
für die Parameterwerte stehen:
-dProcessColorModel=/DeviceGray \
-dColorConversionStrategy=/Gray \
-dColorConversionStrategyForImages=/Gray \
Verwendung -s
für diese Parameter. In diesem Fall müssen die Schrägstriche/
für die Parameterwerte übersprungen werden:
-sProcessColorModel=DeviceGray \
-sColorConversionStrategy=Gray \
-sColorConversionStrategyForImages=Gray \
(Allerdings lässt sich aus diesem Beispiel keine allgemeine Regel für alle Ghostscript-Optionen ableiten, sie gilt nur für eine bestimmte Teilmenge von Parametern, bei denen -s...
oder -d...
alternativ so verwendet werden kann.)
Also ich habe es genau falsch herum verstanden. Entschuldigung für die Verwirrung, die dadurch verursacht wurde!
In jedem Fall funktioniert der geänderte Befehl für die big.pdf
jetzt verknüpften OPs. Es bringt herunter
Daten für Originalbild innen big.pdf
:
$ pdfimages -list big.pdf
page num type width height color comp bpc enc interp objID x-ppi y-ppi size ratio
-----------------------------------------------------------------------------------
1 0 image 1600 1071 rgb 3 8 image no 7 0 142 142 2502K 50%
Daten für neues Bild innen smaller-downsampled+gray.pdf
:
$ pdfimages -list smaller-downsampled+gray.pdf
page num type width height color comp bpc enc interp objID x-ppi y-ppi size ratio
-----------------------------------------------------------------------------------
1 0 image 800 535 gray 1 8 jpeg no 12 0 71 71 48.5K 12%
^
. Und eventuell die Leerzeichen am Zeilenanfang entfernen. (Ich dachte, jemand, der explizit nach einem Befehlszeilentool fragt, weiß das.)/
gesprochen - ich habe über das Ersetzen von \ als Zeilenfortsetzungsmarkierungen gesprochen! Ich habe auch NICHT dafür geworben, Leerzeichen am Zeilenende vor den (neuen) ^
Schildern zu entfernen (es muss mindestens 1 Leerzeichen bleiben!).gswin64.exe
... @FateTrader: Außerdem habe ich die Verwendung für Windowsnicht empfohlengswin64c.exe
(beachten Sie dasc
vor dem.exe
?!?)
Frank Dernoncourt
Manny Calavera