jPDFImages Entwicklerhandbuch
Inhalt
Einführung
Erste Schritte
Bilder exportieren
Bilder importieren
Grundlegende Dokument-Informationen bestimmen
Verteilung und JAR-Dateien
Einführung
jPDFImages ist eine Java-Bibliothek, die sich nahtlos in Ihre Anwendung integriert; mit ihr kann man PDF-Dokumente in Bilder umwandeln sowie PDF-Dokumente mit Bilder anlegen bzw. aktualisieren. jPDFImages bietet die folgenden Funktionen:
- Seiten eines PDF-Dokuments als JPEG-, TIFF- oder PNG-Bild exportieren
- Bilder in neue oder vorhandene Dokumente importieren
- Seiten in BufferedImage-Objekte für die weitere Verarbeitung exportieren
- Sichern im Dateisystem oder in Java Output-Streams
Erste Schritte
Ausgangspunkt beim Einsatz von jPDFImages ist die Klasse com.qoppa.pdfImages.PDFDocument. Diese Klasse wird gebraucht, um PDF-Dokumente zu laden oder neue Dokumente zu erzeugen; danach bietet sie Methoden, um Bilder in und aus dem Dokument zu importieren und zu exportieren.
Die Klasse bietet drei Konstruktoren, um PDF-Dateien aus dem Dateisystem, einer URL oder einem InputStream zu laden. Alle Konstruktoren benötigen einen zusätzlichen Parameter, ein Objekt, das IPasswordHandler implementiert, dieses wird abgefragt, falls die PDF-Datei beim Öffnen ein Kennwort (genannt Öffnen- oder Benutzer-Kennwort) verlangt. Für nicht-verschlüsselte PDF-Dateien kann der zweite Parameter “null” sein:
PDFDocument pdfDoc = new PDFDocument (new URL(http://mysite.com/content.pdf"), null); |
Zusätzlich bietet die Klasse einen vierten Konstruktor, um ein leeres Dokument zu erzeugen. Dieser Konstruktor kann benutzt werden, um ein neues Dokument vollständig aus bereits existierenden Bildern zu erzeugen.
Bilder exportieren
Sobald ein PDF-Dokument durch eine Instanz der Klasse PDFDocument geladen wurde, können die Seiten des Dokuments als Bilder im JPEG, TIFF oder Binär-Formaten exportiert werden.
//Die erste Seite in allen drei Formaten exportieren pdfDopdfDoc.savePagesAsJPEG(0, "c:\\somefile.jpg",150,0.80f); pdfDoc.savePagesAsTIFF(0, "c:\\somefile.jpg",150,TIFFCompression.TIFF_FAX_GROUP4)); pdfDoc.savePagesAsPNG(0, "c:\\somefile.jpg",150f); |
Beachten Sie, in allen Methoden-Aufrufen den dritten Parameter (im obigen Beispiel auf 150 gesetzt). Dieser Parameter wird für die DPI beim Rendern des Bildes gebraucht. Da PDF als Format unabhängig von der Auflösung ist, kann es zu jeder DPI gerendert werden, deshalb muss dieser Parameter f¨r die Bibliothek übergeben werden. Der DPI-Wert beeinflusst unmittelbar die Breite und Höhe eines Bildes.
Beim Speichern einer JPEG- oder TIFF-Datei gibt es auch einen vierten Parameter. Wenn eine JPEG-Datei gespeichert wird, stellt der vierte Parameter die Qualitätsstufe für die Komprimierung des JPEG-Bildes dar; er kann zwischen 0.10 und 1.00 liegen. Wenn eine TIFF-Datei gespeichert wird, bestimmt der vierte Parameter die anzuwendende TIFF-Komprimierung; er muss einer der vordefinierten Werte aus der Klasse TIFFCompression entsprechen.
Zusätzlich kann die Bibliothek das Bild einer Seite als BufferedImage-Objekt zur¨ck liefern. Der Methodenaufruf ist wie folgt:
BufferedImage pageImage = pdfDoc.getPageImage (0, 150); |
Wie bei den anderen Methoden, kann dieser Methode ein DPI-Wert als Parameter übergeben werden.
Bilder importieren
jPDFImages kann auch Bilder auf neue Seiten eines Dokuments importieren. Das Dokument kann ein bereits vorhandenes Dokument oder ein neues Dokument gemäß dem beim Erzeugen des PDFDocument-Objekts verwendeten Konstruktor sein. Sobald ein PDFDocument-Objekt angelegt wurde, importiert der folgende Code Bilder im JPEG-, TIFF- und PNG-Format:
// Neuue Seiten erzeugen und Bilder auf ihnen importieren pdfDoc.appendJPEGAsPage ("c:\\somefile.jpg"); pdfDoc.appendTIFFAsPages ("c:\\somefile.tif"); pdfDoc.appendPNGAsPage ("c:\\somefile.png"); |
Wenn die Methoden aufgerufen werden, erzeugt die Bibliothek neue Seiten und passt sie auf die Bildgröße an; danach kann man das Bild auf die neuen Seiten importieren. Die Bibliothek schaut nach dem DPI-Wert in den Bild-Dateien, um die Größe der Seite in Inches zu bestimmen.
Wenn TIFF-Dateien importiert werden, erzeugt die Bibliothek mehrere Seiten, falls die TIFF-Datei mehrere Bilder enthält.
Grundlegende Dokument-Informationen bestimmen (Titel, Autor, etc…)
Um grundlegende Informationen über das geladene PDF-Dokument zu erhalten, müssen Sie die DocumentInfo-Klasse lesen, auf diese kann durch PDFDocument.getDocumentInfo zugegriffen werden. Mittels dieser Klasse können Sie Informationen über das Dokument wie den Titel, Autor, Betreff, Schlüsselwörter, etc. erhalten.
System.out.println(pdfDoc.getDocumentInfo().getTitle()); System.out.println(pdfDoc.getDocumentInfo().getAuthor()); System.out.println(pdfDoc.getDocumentInfo().getKeywords()); |
Verteilung und JAR-Dateien
jPDFImages wird in einer einzigen JAR-Datei ausgeliefert; jPDFImages.jar – sie wird mit dem Evaluationsbeispiel installiert. Wenn eine Anwendung, die jPDFImages enthält, verteilt werden soll, muss, damit die Anwendung läuft, die jPDFImages.jar-Datei zusammen mit ihr verteilt werden; zusätzlich muss diese im Classpath aufgenommen werden.
jPDFImages nutzt die Java Image I/O-Klassen, um TIFF- und PNG-Bilder zu lesen und zu schreiben und um Bilder nach JPEG 2000 in PDF-Dokumenten zu dekodieren. Damit die Host-Anwendung diese Bild-Formate unterstützen kann, benötigt die Bibliothek im Classpath zwei weitere jar-Dateien: jai_imageio.jar und jai_codec.jar. Beide jar-Dateien werden mit der Evaluationsversion der Bibliothek ausgeliefert.