Wenn Sie nur zwei PDF-Dateien ohne erneute Aufbereitung ihres Inhalts verketten möchten, pdftk
ist dies für Sie. (Unter Mac OS X sollte dies über MacPorts oder Fink verfügbar sein. Für Linux gibt es native Pakete für alle großen Distributionen; für Windows, siehe hier. ) Versuchen Sie Folgendes:
pdftk title.pdf content.pdf cat output book.pdf
Dadurch wird title.pdf vor content.pdf gestellt und das Ergebnis in book.pdf geschrieben .
pdftk
ist eine "dumme", aber sehr schnelle Möglichkeit, zwei (oder mehr) PDF-Dateien zu verketten. „Dumb“ in so weit, wie pdftk
in keiner Art und Weise interpretieren die PDF - Datenstrom, es macht Sie sicher, dass die internen Objektnummern werden wieder neu gemischt je nach Bedarf und erscheinen in der PDF - xref
Struktur (die im Grunde eine Art von PDF ist ToC für Objekte).
Ghostscript:
Wenn Sie Ghostscript verwenden möchten, lautet der grundlegende Befehl zum Verketten derselben beiden Dateien:
gs \ -o book.pdf \ -sDEVICE=pdfwrite \ title.pdf \ content.pdf
Wie Sie jedoch erfahren haben, kann diese einfache Befehlszeile Ihre Bildqualität beeinträchtigen. Der Grund ist, dass Ghostscript bei der Verarbeitung von PDF- Dateien nicht "Dump" ist: Es interpretiert sie beim Einlesen vollständig und erstellt beim Schreiben des Ergebnisses eine komplett neue Datei. Zum Erstellen des Ergebnisses werden automatisch Standardeinstellungen für viele Details in der Gesamtverarbeitung verwendet. Diese Standardeinstellungen gelten für alle Fälle, in denen die Aufrufe von Ghostscript nicht anderweitig angewiesen wurden.
Daher ist die Methode von Ghostscript zur Erstellung des neuen book.pdf viel "intelligenter" (aber auch viel langsamer) als pdftk
die Methode von "". (Dies ist auch der Grund, warum Ghostscript in vielen Fällen in der Lage ist, PDF-Dateien innerhalb von Grenzen zu "reparieren" oder Schriftarten in die Ausgabe-PDFs einzubetten, die nicht in PDF-Eingabedateien eingebettet sind, oder doppelte Bilder zu entfernen und zu ersetzen diese durch bloße Referenzen usw. - und generell kleinere, besser optimierte Dateien aus aufgeblähten PDF-Eingabedateien ...)
Die Lösung besteht darin, Ghostscript nicht mit seinen Standardeinstellungen arbeiten zu lassen: indem Sie der Befehlszeile weitere benutzerdefinierte Parameter hinzufügen.
Was bedeutet "Ghostscript" interpretiert "seine PDF-Eingabe" ?
Alle Dateien und deren Inhalte (Objekte, Ströme, Schriftarten, Bilder usw.) 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 seine internen Standardeinstellungen für die Hunderte von Parametern [*] an, die verfügbar sind.
Leider führt dies zu einer "Wiederaufbereitung" von Bildern gemäß diesen Standardeinstellungen, die nur durch Hinzufügen eigener (gewünschter) Befehlszeilenparameter vermieden oder überschrieben werden können.
Ihre Bildprobleme könnten von Ghostscript verursacht werden (aufgrund von Lizenzproblemen), JPEG2000-Bilder in JPEG-Kodierung umzuwandeln. Wenn Sie dies vermeiden möchten, fügen Sie der Befehlszeile Folgendes hinzu:
-dAutoFilterColorImages=false \ -dAutoFilterGrayImages=false \ -dColorImageFilter=/FlateEncode \ -dGrayImageFilter=/FlateEncode \
Weitere bildbezogene Befehlszeilenoptionen, die berücksichtigt werden sollten, sind:
-dColorConversionStrategy=/LeaveColorUnchanged \ -dDownsampleMonoImages=false \ -dDownsampleGrayImages=false \ -dDownsampleColorImages=false \
Die vollständige Ghostscript-Befehlszeile, die Sie glücklich machen könnte, sollte daher wie folgt lauten:
gs \ -o book.pdf \ -sDEVICE=pdfwrite \ -dColorConversionStrategy=/LeaveColorUnchanged \ -dDownsampleMonoImages=false \ -dDownsampleGrayImages=false \ -dDownsampleColorImages=false \ -dAutoFilterColorImages=false \ -dAutoFilterGrayImages=false \ -dColorImageFilter=/FlateEncode \ -dGrayImageFilter=/FlateEncode \ title.pdf \ content.pdf
Sie können Ghostscript auch anweisen, Bilder in der Ausgabe-PDF überhaupt NICHT zu komprimieren, indem Sie diese Befehlszeile verwenden:
gs \ -o book.pdf \ -sDEVICE=pdfwrite \ -dColorConversionStrategy=/LeaveColorUnchanged \ -dEncodeColorImages=false \ -dEncodeGrayImages=false \ -dEncodeMonoImages=false \ title.pdf \ content.pdf
.
[*]:
Wenn Sie an einer vollständigen Liste der Standardeinstellungen interessiert sind, die Ghostscripts pdfwrite- Gerät verwendet, führen Sie den folgenden Befehl aus. Sie erhalten die vollständige Liste:
gs \ -sDEVICE=pdfwrite \ -o /dev/null \ -c "currentpagedevice { exch ==only ( ) print == } forall"
Um zu erklären, was genau all diese Parameter bedeuten, müssen Sie sich in der Adobe-Dokumentation über "Distiller-Parameter" informieren . Ghostscript ist sehr bemüht, all diese ...