Ich habe eine PDF-Datei mit bereits komprimierten und etwas artefaktbehafteten Bildern und stelle dieser PDF-Datei mit Ghostscript eine Titelseite voran.
Ich kann GS jedoch nicht anweisen, die vorhandenen Bilder so zu verwenden, wie sie sind, ohne sie erneut zu verarbeiten, und jetzt habe ich das Gefühl, dass es etwas mit der Funktionsweise von GS zu tun hat, dh, Sie können ein PDF nicht neu kompilieren / verknüpfen ohne seine Bilder wieder aufzubereiten. Ist das wahr?
Ich kann die DPI-Einstellung in GS erhöhen, aber es wird von 5 MB auf 60 MB gehen, während es immer noch schlechter aussieht .
Gibt es eine bessere Alternative zu GS, die das tut, was ich brauche (am besten unter OS X)?
pdf
ghostscript
pdftk
Mahmoud Al-Qudsi
quelle
quelle
Antworten:
Wenn Sie nur zwei PDF-Dateien verketten möchten, ohne den Inhalt erneut zu verarbeiten,
pdftk
sind Sie hier richtig. (Unter Mac OS X sollte dies über MacPorts oder Fink verfügbar sein. Für Linux gibt es native Pakete für alle wichtigen Distributionen. Für Windows sehen Sie hier nach. ) Versuchen Sie Folgendes:Dies wird die prepend title.pdf zum content.pdf und das Ergebnis in schreiben book.pdf .
pdftk
ist eine "blöde", aber sehr schnelle Möglichkeit, zwei (oder mehr) PDF-Dateien zu verketten. "Dumm" insofern, alspdftk
es den PDF - Datenstrom in keiner Weise interpretiert , es nur dafür sorgt, dass die internen Objektnummern nach Bedarf neu gemischt werden und in der PDF -xref
Struktur (die im Grunde eine Art PDF ToC für PDF ist) erscheinen Objekte).Ghostscript:
Wenn Sie Ghostscript verwenden möchten, lautet der grundlegende Befehl zum Verketten derselben zwei Dateien:
Wie Sie jedoch festgestellt haben, kann diese einfache Befehlszeile Ihre Bildqualität beeinträchtigen. Der Grund dafür ist, dass Ghostscript bei der Verarbeitung von PDFs nicht "dump" ist: Es interpretiert sie beim Einlesen vollständig und erstellt beim Ausschreiben des Ergebnisses eine völlig neue Datei. Für die Erstellung des Ergebnisses werden automatisch die Standardeinstellungen für viele Details in der Gesamtverarbeitung verwendet. Diese Standardeinstellungen gelten für alle Fälle, in denen die Aufrufe Ghostscript nicht anders angewiesen hatten.
Die Methode von Ghostscript zum Erstellen des neuen Buches.pdf ist also viel "intelligenter" (aber auch viel langsamer) als die Methode von Ghostscript
pdftk
. (Dies ist auch der Grund, warum Ghostscript in vielen Fällen in der Lage ist, b0rken PDF-Dateien in Grenzen zu "reparieren" oder Schriftarten in die Ausgabe-PDFs einzubetten, die nicht in Eingabe-PDFs eingebettet sind, oder doppelte Bilder zu entfernen und zu ersetzen sie durch bloße Verweise usw. - und insgesamt kleinere, besser optimierte Dateien aus aufgeblähten Eingabe-PDFs erstellt ...)Die Lösung besteht darin, Ghostscript die Standardeinstellungen nicht zu überlassen: indem der Befehlszeile weitere benutzerdefinierte Parameter hinzugefügt werden.
Was bedeutet "Ghostscript 'interpretiert' seine PDF-Eingabe" ?
Alle Dateien und deren Inhalte (Objekte, Streams, Schriftarten, Bilder, ...) werden eingelesen, geprüft und in einer eigenen internen Darstellung gehalten, bevor die resultierende PDF-Datei mit ihren PDF-Objekten erneut ausgespuckt wird. Beim Ausspucken wendet Ghostscript jedoch alle internen Standardeinstellungen für die Hunderte von verfügbaren Parametern [*] an .
Leider führt dies zu einer "erneuten Verarbeitung" von Bildern gemäß diesen Standardeinstellungen - die nur durch Hinzufügen eigener (gewünschter) Befehlszeilenparameter vermieden oder überschrieben werden kann.
Ihre Bildprobleme können durch die Notwendigkeit von Ghostscript (aufgrund von Lizenzproblemen) verursacht werden, JPEG2000-Bilder in JPEG-Codierungen umzucodieren. Wenn Sie dies vermeiden möchten, fügen Sie Ihrer Befehlszeile Folgendes hinzu:
Weitere bildbezogene Befehlszeilenoptionen, die berücksichtigt werden sollten, sind:
Die vollständige Ghostscript-Befehlszeile, die Sie glücklich machen könnte, sollte also lauten:
Sie können Ghostscript auch anweisen, Bilder in der Ausgabe-PDF-Datei NICHT zu komprimieren , indem Sie die folgende Befehlszeile verwenden:
.
[*]:
Wenn Sie sich über eine vollständige Liste der Standardeinstellungen informieren möchten , die das pdfwrite- Gerät von Ghostscript verwendet , führen Sie den folgenden Befehl aus. Es gibt Ihnen die vollständige Liste zurück:
Erläuterungen dazu, was genau diese Parameter bedeuten, finden Sie in der Adobe-Dokumentation zu "Distiller-Parameter" . Ghostscript ist sehr bemüht, all diese ...
quelle
dEncodeColorImages
,dEncodeGrayImages
,dEncodeMonoImages
Ursache der Ausgabedatei viel massiveren zu werden. Durch das Entfernen wurde die Dateigröße von 22 MB auf 3,1 MB geändert, und die Bildqualität scheint genau so zu sein, wie bei Verwendung dieser Flags. Alle die einzigartigen Flaggen mit I Gebrauch ist:dColorConversionStrategy=/LeaveColorUnchanged
,dDownsampleMonoImages=false
,dDownsampleGrayImages=false
,dDownsampleColorImages=false
,dAutoFilterColorImages=false
,dAutoFilterGrayImages=false
,dColorImageFilter=/FlateEncode
,dGrayImageFilter=/FlateEncode
-dColorImageFilter
? Ich kann nurFlateEncode
und findenDCTEncode
. DCT scheint JPEG zu machen (warum haben sie das verschlüsselt?). Ich denke, FLATE ist mittlerweile eine veraltete Option für Bilder, da das Patent von Bell Labs für das LZW kein Thema mehr ist. Nach einiger Zeit der Suche kann ich jedoch nicht herausfinden, wie PNG (oder etwas anderes) verwendet werden kann. Meine Originalbilder sind PNG und ich möchte, dass sie unverändert bleiben. Ich habe die Option -c ausprobiert, aber es gibt mir-c can only be used in a built with POSTSCRIPT included.
...