Donnerstag, 4. Dezember 2008

PDF Renderer

PDF-APIs gibt es für Java ja so einige. Für ein aktuelles Projekt benötige ich da was, was PDFs als Image rendern kann. Der Kunde will PDFs in seine Webapplikation hochladen und anschließend einzelne Seiten per Klick als Bild im Browser dargestellt bekommen. Mit den meisten APIs lassen sich PDFs zwar erzeugen, aber nicht einlesen bzw. rendern. Ein Test über eine vielzahl von Dokumenten lässt böses ahnen. Keine API schafft es alle Dokumente darzustellen. Am besten schneidet noch der PDF Renderer von Sun ab. An zweiter Stelle, mit einer etwas geringeren Erkennungsrate, liegt die jPodRenderer API, gefolgt von JPedal. Alle APIs haben ein großes Manko: ist beim Renderprozess etwas unklar bzw. entspricht nicht den Standarspezifikationen von Adobe, wird das Rendern sofort abgebrochen. Acrobar Reader, Evince und Foxit Reader schaffen es übrigens ohne Fehlemerldung die betroffenen Dokumente darzustellen.

Recht vielversprechend fand ich übrigens den Freeware Java Reader von Adobe. Leider wollte der sich nicht einmal auf anhieb starten lassen. Irgendwelche MacOS Klassen machen da gewaltig ärger. Die Zeit ist knapp und ich kann nicht wirklich abschätzen, ob dieses Urgestein von Software wirklich den erhofften Erfolg bringt. Ansonsten hätte man das Ding sicher dazu bringen können, in eine Imagedatei zu rendern. Mit einigen unschönen Hacks würde ich da allerdings schon rechnen.

Eine nützliche Linksammlung mit PDF-APIs habe ich übrigens hier gefunden.

[Update]
Eine weitere (kommerzielle) Library ist noch die Asprise Java PDF Library http://asprise.com/product/javapdf/index.php

[Update]
Eben bin ich noch absolut zufällig über die Big Faceless Java PDF Library (http://bfo.co.uk/products/pdf) gestoßen. Ob die was taugt, weiß ich nicht. Der Kunde - der, der die PDFs als Bilder generiert haben wollte - ist jedenfalls nicht weiter auf das Thema zu sprechen gekommen. Entweder er benutzt die Funktionalität schlicht nicht oder er ist zufrieden.

[Update]
Noch eine Kommerzielle PDF API, die auch rendern kann. Diesmal aus Indien. PDFOne: http://www.gnostice.com. Eine Free-Version gibt es auch, die aber keine Viewer und Printer Komponenten enthält. Aktuelle Version 3.1

[Update]
Ich hab "Java Reader von Adobe" zum Laufen gebracht, dafür du brauchst eine MacOS jar, die "MRJToolkitStubs-1.0.jar" heißt. Du kannst von hier herunterladen: http://mirrors.ibiblio.org/pub/mirrors/maven/mrj/jars/MRJToolkitStubs-1.0.jar

[Update]
Weitere Bibliothek, die inzwischen auch unter LGPL verfügbar ist: http://www.icepdf.org/
Rendert rattenschnell und alles, was mir bisher unter die Finger geraten ist. Leider ist die Font Engine kommerziell und ohne sind die Ergebnisse dann auch wieder durchwachsen.

[Update]
API die Nächste: Ghost4J. Komplett frei ist Ghost4J ein Java Wrapper für die Ghostscript API. Da es Ghostscript für Linux / OSX und Windows gibt, ist das Gängigste an Betriebssystemen soweit abgedeckt. Das Projekt ist von ende 2008 und somit recht neu. Sourcen und Download gibt es hier: http://sourceforge.net/projects/ghost4j/

[Update]
Die Firma Foxit Software vertreibt neben dem Foxit-Reader auch eine Programmier-API. Scheinbar gibt es zwar keine Java-Schnittstelle, aber da sollte sich via JNI in überschaubaren Zeitraum etwas machen lassen: http://www.foxitsoftware.com/pdf/reader/ Leider ein ziemlich teurer Spaß. Also nix für Opensource-Software.


[Update]
Eben angetestet und für gut befunden. Das JMuPdf-Projekt verwendet die native Bibliothek von MuPDF. Das Ergebnis ist überzeugend. Derzeit für Linux32/64 und Windows32/64 verfügbar.

[Update 3.5.2013]
Es gibt da noch das gnujpdf-Projekt, dass komplett auf Java basiert.

Keine Kommentare:

Kommentar veröffentlichen