Linux
Postscript
PDFs mit den Poppler-Tools analysieren und optimieren
Aktualisiert: 01.10.2008
Das Erstellen eines korrekten, auf allen Systemen kompatiblen PDF-Dokumentes ist nicht so einfach und der unbedarfte Benutzer gibt sich meistens mit dem Klick auf den «PDF exportieren»-Knopf zufrieden. Fragen nach der Kompatibilität zu älteren PDF-Versionen, den korrekten Metadaten oder der Einbindung der verwendeten Zeichensätze sind nicht zu erwarten. Letzteres ist besonders schlimm, da es bei der Verwendung systemeigener Zeichensätze das gesamte PDF unleserlich macht. Als Beispiel eines äusserst unprofessionell erstellten PDF-Dokuments sehen Sie unten eine wissenschaftliche Arbeit (sic!), welche neben dem nichtssagenden Titel «Microsoft Word - first page.doc» die Zeichensätze «Palatino-Italic» als eingebetteten Teilsatz und «Times-Roman» und «Times-Bold» als nicht eingebettete Teilsätze verwendet. Da es unter Linux den Windows-Zeichensatz «Times» nicht gibt (und dieser auch nicht in das PDF integriert wurde), können nur die Titel mit Palatino-Italic korrekt dargestellt werden.

Bei solchen, meist aus Unwissenheit oder Faulheit entstehenden Fehlern können die Poppler-Tools – eine Sammlung von kleinen Hilfsprogrammen, die sich auf die PDF rendering engine «libpoppler» stützen – meist weiterhelfen. Mit ihnen lassen sich PDF-Dokumente sehr einfach analysieren (pdfinfo, pdffonts) oder ihr Inhalt extrahieren (pdftops, pdftotext, pdftohtml pdfimages). Und mit dem Ghostscript-Tool «ps2pdf» lässt sich anschliessend eine Postscript-Datei mit diversen Optionen wieder in ein PDF zurückwandeln.
Mit «pdfinfo» und «pdffonts» PDF-Dokumente analysieren
Mit den beiden Analyse-Tools «pdfinfo» und «pdffonts» lassen sich die oben in der Einleitung erwähnten Probleme gut analysieren. Der Aufruf «pdfinfo» liefert sowohl Informationen zum Dokument als auch alle XML-Metadaten, und «pdffonts» listet alle Zeichensätze und deren Verwendung detailliert auf.
pdfinfo (-meta) input.pdf psffonts input.pdf
Mit «ps2pdf» Kompatibilität ändern und PDFs besser komprimieren
Auf dem Weg von der ersten PDF-Version 1.0 (1993) bis zur heutigen hat sich einiges getan, indem die Möglichkeiten kontinuierlich erweiter und immer mehr Spielereien eingebaut wurden. Die logische Folge ist aber, dass die verschiedenen Versionen nicht immer so kompatibel sind wie man sich das gerne wünschen würde – weder unter einander noch im Zusammenspiel mit Programmen und Druckern. Mit dem Ghostscript-Tool «ps2pdf» hat man nun die Möglichkeit, ein PDF-Dokument proplemlos von einer Version in die andere zu konvertieren. Dazu muss das PDF-Dokument aber vorher mit «pdftops» in eine Postscript-Datei umgewandelt werden. (Achtung! Es gibt auch das Programm «pdf2ps», das jedoch nicht verwendet werden sollte).
pdftops input.pdf output.ps ps2pdf -dCompatibilityLevel=1.x input.ps output.pdf
Grösse und Qualität eines PDF-Dokuments lassen sich mit den vielen Option von «ps2pdf» detailliert beeinflussen. Es ist jedoch weitaus effizienter und nervenschonender, dafür die weiter unten aufgeführten Voreinstellungen zu benutzen. Der Vollständigkeit wegen seine hier aber noch ein paar Optionen aufgeführt.
pdftops input.pdf output.ps ps2pdf -dUseFlateCompression=true -dEmbedAllFonts=true input.ps output.pdf pdfopt input.pdf output.pdf
Das Setzen von Optionen, die eine Verbesserung des PDFs bewirken sollen (z. B. «-dOptimize» oder «-dDoThumbnails=true»), ist bei ps2pdf überflüssig, da für diesen Zweck «pdfopt» existiert. «pdfopt» ordnet die Elemente linear an, setzt «hint pointers», damit individuelle Seiten über Netzwerk oder Internet schneller angezeigt werden können, und erstellt Vorschaubildchen. Eigentlich wird auch das Setzen der Optionen «-dUseFlateCompression=true» oder «-dEmbedAllFonts=true» überflüssig, wenn die Postscript-Datei auf ein bestimmtes Ausgabemedium hin komprimiert wird.
PDFs mit «ps2pdf» für ein spezielles Ausgabemedium komprimieren
Einen weitaus besseren Einfluss auf die Grösse eines PDFs hat man durch die Benutzung einer der fünf Voreinstellungen von «ps2pdf», welche die jeweils beste Komprimierung für ein bestimmtes Ausgabemedium enthalten. Diese Voreinstellungen (default, screen, ebook, printer und prepress) entsprechen jenen von Adobes «Acrobat Distiller 5», dessen verschiedene Parameter «ps2pdf» vollständig unterstützt. Die teils beträchtlichen Schwankungen in der Dateigrösse seien hier anhand eines fünfseitigen Textes mit vier grossen Bildern verdeutlicht.
pdftops input.pdf output.ps (= 2’231’994 Bytes) ps2pdf -dPDFSETTINGS=/screen input.ps (= 151’013 Bytes) ps2pdf -dPDFSETTINGS=/default input.ps (= 460’198 Bytes) ps2pdf -dPDFSETTINGS=/ebook input.ps (= 473’706 Bytes) ps2pdf -dPDFSETTINGS=/printer input.ps (= 693’955 Bytes) ps2pdf -dPDFSETTINGS=/prepress input.ps (= 942’245 Bytes)
Von allen Parametern seien hier nur einige zum besseren Verständnis der Dateigrösse erwähnt. Komprimierung und Optimierung wird bei den Einstellungen screen, ebook, printer und prepress (nicht aber bei default) verwendet, was die Angabe von Optionen wie «-dUseFlateCompression» oder «-dOptimize» überflüssig macht. Die Zeichensätze werden bei den Einstellungen default, ebook, printer und prepress (nicht aber bei screen) automatisch eingebettet, was die Angabe der Option «-dEmbedAllFonts=true» überflüssig macht. Auch Thumbnails werden automatisch erstellt, sodass die Angabe der Option «-dDoThumbnails=true» ebenfalls nicht nötig ist.
Die Auflösung von Farb- und Graustufenbildern ist bei default und screen 72 dpi, bei ebook 150 dpi und bei printer und prepress 300 dpi. Die Auflösung von Schwarzweissbildern bei default, screen und ebook 300 dpi und bei printer und prepress 1200 dpi. Das Herunterrechnen aller Bilder geschieht bei ebook, printer und prepress bikubisch (bicubic), bei screen durchschnittlich (average) und bei default mittels Subsamples (subsample).
Die Fehlermeldung bei der Verwendung der Option -dPDFSETTINGS=/printer kann getrost ignoriert werden und sollte bei der nächsten Programmaktualisierung eliminiert sein. Zur Behebung dieses Bugs kann man einfach die Option «-dUseCIEColor=true» hinzufügen.

