Scheibchenweise
Werkzeuge für PDF und Postscript (Teil 5)
Eingebettete Fonts
Viele Anwender vergessen, die verwendeten Fonts in ihr PDF-Dokument einzubetten. Öffnet man ein solches PDF-File auf einem anderen Computersystem, auf dem die verwendeten Fonts nicht vorliegen, so ersetzt der Viewer sie in der Darstellung durch eine mehr oder weniger passende Alternative. Dasselbe gilt für die Ausgabe auf Druckern, die die verwendeten Fonts nicht kennen.
Um zu prüfen, ob das PDF-File die Fonts enthält, liefert das Xpdf-Paket das Werkzeug pdffonts mit. Es ermittelt die verwendeten Schriftartdateien, deren Typ (Type 1, Truetype, CID) und deren Nutzung im Dokument.
Abbildung 4 zeigt, dass im vorliegenden PDF-File sechs verschiedene Type-1-Fonts zum Einsatz kommen, darunter Computer Modern Sans Serif 12pt (CMSS12) und Computer Modern Tele Type 8pt (CMTT8). Alle Fonts sind korrekt in das PDF eingebettet, wie das "yes" aus der Spalte "emb" bestätigt. Das "emb" steht hier als Abkürzung für "embedded" (deutsch: eingebunden, eingebettet).
Texte und Bilder extrahieren
Obwohl Postscript- und PDF-Dokumente primär für den Druck konzipiert wurden, finden sie zunehmend Eingang in Datenbanken und Archive. Automatische Verschlagwortung und Kategorisierung sind dabei aufgrund der Materialfülle unabdingbar geworden. Dateien, die vorwiegend aus eingebetteten Bilddaten und kaum Text bestehen, lassen sich meist nur manuell und mit erheblichem Aufwand klassifizieren. Auch in Sachen Barrierefreiheit erweisen sie sich als problematisch: Sie grenzen Sehbehinderte aus, da man den Inhalt nicht über die Kombination Screenreader [5] und Braille-Zeile auslesen kann. Es gibt keine Möglichkeit, in vertretbarer Zeit die Bilddaten angemessen zu interpretieren und in brauchbaren Text zu überführen.
Die Extraktion von Textbestandteilen gelingt für Postscript-Dokumente hingegen mit den Werkzeugen ps2ascii und pstotext aus dem Ghostscript-Paket ([6],[7]):
$ ps2ascii in.ps out.txt
Der erste Parameter bezeichnet die Postscript-Quelldatei. Aus Ihr extrahiert Ps2ascii den Text und schreibt ihn in das Ausgabefile, das der zweite Parameter benennt. Auch für PDF-Dokumente nutzen Sie Ps2ascii sowie darüber hinaus pdftotext aus dem Xpdf-Paket. Aufrufreihenfolge und Ergebnisse entsprechen jenen bei Ps2ascii:
$ ps2ascii in.pdf out.txt $ pdftotext in.pdf out.txt
Die Qualität des extrahierten Textes variiert erheblich und hängt unter anderem von der Beschaffenheit der Ursprungsdatei ab. Fließtext bereitet kaum Probleme, Schwierigkeiten machen dagegen Worttrennungen, mehrspaltige Dokumente, von Text umflossene Bilder sowie Tabellen. Deren ursprüngliche Anordnung geht nahezu komplett verloren. Umlaute, Sonderzeichen und verwendete Encodings bereiten ebenso Kopfzerbrechen. Als Workaround akzeptiert Pdftotext eine Option -enc Encoding
für die gewünschte Kodierung der Ausgabedatei. Sie wirkt allerdings nur sehr begrenzt.
Zum Extrahieren von Abbildungen und Bilddaten gibt es die Werkzeuge psrip[8] sowie pdfimages und pdftoppm (beide aus dem Xpdf-Paket). Das in Perl geschriebene Psrip benötigt als Parameter lediglich das Postscript-File:
$ psrip eingabe.ps $ psrip -d bilder eingabe.ps
Die gefundenen Abbildungen speichert Psrip mit ihrem ursprünglichen Namen im aktuellen Verzeichnis. Über die Option -d Verzeichnis
lässt sich auch ein Ordner zum Speichern angeben, im Listing oben ist es das Verzeichnis bilder. Das Ergebnis präsentiert Psrip wie in Abbildung 5.



