Freitag, 3. Mai 2013

PDF-Dateien rendern mit Poppler und Cairo

Üblicher weise empfehle ich für das PDF-Rendern mit Java Ghostscript und Ghost4j. Das funktioniert gut und die Ergebnisse sind in Ordnung. Wer Linux benutzt kennt vielleicht auch noch die Poppler-Bibliothek, die ebenfalls für ihre brauchbaren Ergebnisse bekannt ist. Verwendung findet Sie zum Beispiel im PDF-Betrachter Evince. Mittels JNA läßt sich natürlich auch diese Bibliothek  benutzen. Ich habe dazu etwas Java-Code im Netz gefunden, der mit der Poppler-Bibliothek den Text aus einer PDF extrahiert. Auf Grundlage von diesem Source habe ich mal weitergemacht und das Rendern ergänzt. Dazu gibt es in der Poppler-Bibliothek einen Png-Bilddatei-Export. Weil der Umweg über das Dateisystem aber nicht wirklich schön ist und das PNG-Kodieren- und Dekodieren der PDF-Seiten unnötig ist, habe ich eine Lösung mit einem Cairo-Grafik-Buffer genutzt in den die PDF-Seite gerendert und anschließend die Grafik-Bytes in ein BufferedImage überführt werden. Den Source dafür habe ich mal hochgeladen. Für den weiteren Ausbau ist die Poppler-Dokumentation nützlich und einiges geht da bestimmt noch.

Weitere Java-Bibliotheken zum Thema PDF-Dateien rendern habe ich vor längerem schon mal zusammengesucht und immer wieder mal ergänzt.