Linux
Postscript
PDFs mit verschiedenen Blattformaten zusammenführen
Aktualisiert: 30.01.2009
Der einfache Weg mit standardisierten DIN-Normen
Zu den grösseren Herausforderungen gehört sicherlich das Zusammenführen mehrerer PDFs mit verschiedenen Blattformaten zu einem PDF mit einem einzigen Blattformat. Bei der Redimensionierung mit den «Poppler-Tools» ist auf einige Fallen zu achten. Glück hat, wer PDFs auf Standarddimensionen wie DIN A4, DIN A3 oder Letter zusammenbringen muss: er kann dies mit «ps2pdf» ohne Angabe weiterer Argumente machen – sollte vorher allerdings einen Blick in die Datei /etc/papersize werfen, wo das Standardblattformat für das System eingetragen ist.
pdftops input.pdf output.ps ps2pdf -dPDFSETTINGS=/ebook input.ps output.pdf pdftk *.pdf output fertige_datei.pdf
Die obige Befehlsfolge wandelt das PDFs zunächst in eine Postscript-Datei um und diese dann mit einer Qualitätsangabe (und dem Standardformat des Systems) wieder in ein PDF zurück. Hat man dies mit allen benötigten Dateien gemacht, kann man schliesslich die Dokumente mit dem «pdftk» zu einer Datei zusammenfügen.
Der schwierige Weg mit nicht-standardisierten Blattdimensionen
Wie gesagt ist das Resultat des obigen Beispiels nur befriedigend, wenn die Dimensionen sowohl der ursprünglichen PDFs als auch des finalen PDFs die gleich sind und einem gebräuchlichen Standard entsprechen. Arbeiten jedoch zum Beispiel mehrere Leute an einer Publikation, dann kann es durchaus vorkommen, dass die einzelnen Teile (Cover, Text, Index, Bilder etc.) in verschiedenen Dimensionen – im schlimmsten Fall noch mit Druckbereich-Markierungen – vorliegen. Hier müssen die genauen Blattmasse zuerst entweder mit «identify», das Teil von «imagmagick» ist, analysiert und notiert werden (der Bash-Befehl «file» liefert hier leider keinerlei Massangaben).
identify input.pdf identify datei.pdf | grep '\[0\]' datei.pdf[0] PDF 434x643 434x643+0+0 DirectClass 16-bit 109.659mb 4.360u 0:06
Der erste Befehl analysiert jede einzelne Seite des PDFs und listet das Ergebnis auf. Ist man sich sicher, dass die Blattdimensionen des gesamten Dokuments gleich sind, kann man auch nur die erste Seite «grepen» (zweiter Befehl). In der Ausgaben von «identify» erkennt man schliesslich die Blattdimensionen (im obigen Beispiel 434x643). Zu beachten ist hier, dass die Blattdimensionen in Punkten/Inch (ppi) angegeben werden. Dies hängt damit zusammen, dass das Postscript-Format – und auf diesem basiert auch das PDF-Format – eine Druckbeschreibungsprache ist, die in Amerika entwickelt wurde. So entspricht bei «pdftops» der Option «-paper A4» die Angabe «-paperw 595 -paperh 842» (berechnet aus der Formel 1 Zoll = 2,54 cm). Eine Tabelle mit den wichtigsten Umrechungen gibt es bei PDFs mit Fotografien oder gescannten Vorlagen erweitern. Ist das definitive Zielformat des PDFs klar, kann man nun die einzelnen Teile mit «pdftops» unter Angabe der gewünschten Dimensionen in Postscript-Dateien und danach mit «ps2pdf» wieder zurückverwandeln.
pdftops -paperw 434 -paperh 643 input.pdf output.ps ps2pdf -sPAPERSIZE=a4 -dPDFSETTINGS=/prepress input.ps output.pdf pdftk *.pdf output fertige_datei.pdf
Der erste Befehl wandelt die Datei input.pdf in ein Postscript mit den gewünschten Blattdimensionen um. Zur besseren Kontrolle können dem Befehl «pdftops» noch die Optionen «-expand», «-noshrink» oder «-nocrop» mitgegeben werden. Sind die Dimensionen des Postscript-Formats grösser als die des ursprünglichen PDF-Formats, kann der Inhalt mit der Option «-expand» in diesem neuen Blattformat passend «aufgeblasen» werden. Möchten Sie hingegen gewisse überdimensionierte Seiten (z. B. ausklappbares Kartenmaterial) auch im kleineren Postscript beibehalten, dann müssen Sie deren automatische Verkleinerung mit den Optionen «-noshrink» und «-nocrop» explizit verhindern.
«ps2pdf» und das Problem der Blattdimensionen
Im Gegensatz zu «pdftops», welches problemlos auch mit äusserst exotischen Blattdimensionen umgehen kann, hat man mit «ps2pdf» im Augenblick keinerlei Möglichkeit, sich ausserhalb der Systemvorgabe in /etc/papersize (A4 unter Ubuntu) zu bewegen. Sowohl die Angaben in «-sPAPERSIZE=» als auch Angaben wie «-paperw» (Blattbreite) und «-paperh» (Blatthöhe) scheinen komplett ignoriert zu werden. Bis eine Lösung für diesen Bug gefunden ist, kann man auf das Programm «epstopdf» ausweichen (siehe unter PDFs mit Fotografien oder gescannten Vorlagen erweitern).
Abschliessend kann man das Postscript mit ps2pdf wieder in ein PDF zurückverwandeln (-sPAPERSIZE=a4 ist eigentlich nicht mehr nötig) und mit dem «pdftk» die einzelnen Teile zur finalen PDF-Datei zusammenkleben. Obwohl das «pdftk» während dieses Vorgangs die internen Verweise (xref) neu erstellt, sollte man das PDF zum Abschluss noch mit «pdfopt» zu optimieren. Und vor dem Optimieren nicht vergessen, die korrekten Metadaten einzufügen.

