Inhalt
Einführung
jPDFWriter ist eine Java-Bibliothek mit der man PDF-Dokumente direkt aus Java-Programmen erzeugen kann.
jPDFWriter kann PDF-Dateien auf zwei Arten erzeugen:
- PDF-Dateien können unmittelbar mit dem sehr einfachen jPDFWriter-API erzeugt werden. Legen Sie einfach ein PDFDocument-Objekt an, erzeugen Sie so viele PDFPage-Objekte wie notwendig, zeichnen Sie auf den Seiten Zeichenketten, Grafiken oder jedes andere durch Graphics2D unterstützte Element und speichern Sie dann das Dokument.
-jPDFWriter erweitert auch den standardmäßigen Java-PrinterJob, so dass Sie PDF-Dateien genauso anlegen können, also ob Sie auf einem physischen Drucker ausdrucken würden. Dies erlaubt es, vorhandenen Druck-Code wiederzuverwenden; die Anwendung kann zur Laufzeit entscheiden, ob sie die Ausgabe auf einen Drucker oder in eine PDF-Datei schicken soll.
PDF-Dateien können als Dateien auf eine Festplatte gespeichert, in einen java.io.OutputStream geschrieben oder (für den Fall man arbeitet innerhalb eines J2EE-Anwendungs-Servers) unmittelbar in ein javax.servlet.ServletOutputStream geschrieben werden, um in einem Browser angezeigt zu werden.
Ein Dokument erzeugen
// Ein neues Dokument anlegen
PDFDocument pdfDoc = new PDFDocument ();
Eine Seite hinzufügen
// Eine Seite erzeugen
PDFPage page = pdfDoc.createPage(null);
// Eine Seite dem Dokument hinzufügen
pdfDoc.addPage (page);
Auf einer Seite mit Graphics-Objekt schreiben und zeichnen
Sobald Sie ein PDFDocument erzeugt haben und ihm eine Seite hinzugefügt haben, können Sie einfach alle standardmäßigen Graphics-Kommandos der Java Graphics2D-Klasse verwenden, um auf die Seite zu zeichnen.
// das Graphics-Objekt auf der Seite bestimmen
Graphics2D g2d = page.createGraphics();
// Ein rotes Rechteck zeichnen
g2d.setColor(Color.red);
g2d.fillRect(100, 100, 400, 200);
// Eine runde Umrandung um das Rechteck zeichnen
g2d.setStroke(new BasicStroke(6));
g2d.setColor(Color.black);
g2d.drawRoundRect(100, 100, 400, 200, 10, 10);
// Eine Zeichenkette zeichnen
g2d.setFont(new Font ("Helvetica", Font.BOLD, 36));
g2d.setColor(Color.white);
g2d.drawString("Qoppa Software", 150, 200);
Das würde die Ausgabe in ein PDF sein, wenn man die obigen Graphics-Kommandos verwenden würde, um auf eine Seite zu schreiben.
 |
Ein JComponent in ein PDF mit Graphics-Objekt drucken
Sie können die print-Methode(Graphics g) von JComponent verwenden, um jede Swing-Komponente auszudrucken. Beachten Sie, Komponenten müssen auf dem Bildschirm angezeigt werden, damit sie ausgedruckt werden können.
// Graphics-Objekt auf der Seite bestimmen
Graphics2D g2d = page.createGraphics();
// myComponent ist eine JComponent, die am Bildschirm angezeigt wird
myComponent.print(g2d);
Ein Dokument speichern
// Ein Output-Dateinamen bestimmen
File outFile = getOutputFile ();
// Das Dokument speichern
if (outFile != null)
{
pdfDoc.saveDocument (outFile.getAbsolutePath());
}
Drucken als PDF über einen PrinterJob
Eine weitere geeignete Möglichkeit, um in ein PDF zu drucken und vorhandenen Druck-Code wiederzuverwenden, ist der Einsatz der PDFPrinterJob-Klasse. Die PrinterJob-Klasse erweitert den Standard-Java-PrinterJob und bildet seine Funktionalität nach; mit der Ausnahme, dass der Output anstatt auf einen Drucker in ein PDF-Dokument geht.
Ein Aufruf der statischen getPrinterJob-Methode erzeugt ein PDFPrinterJob-Objekt. Jedes Printable- oder Pageable-Objekt kann über diesen Druckjob ausgeben werden, wie man es mit einem Standard-Java-PrinterJob machen würde. Benutzer werden nach einem Dateinamen gefragt und der PDFPrinterJob wird in die vorgegebene PDF-Datei drucken.
// Einen PDFPrinterJob bestimmen
PDFPrinterJob printer = (PDFPrinterJob)PDFPrinterJob.getPrinterJob ();
// myPrintable ist eine Klasse, die das Printable Interface implementiert
printer.setPrintable (myPrintable);
printer.setCopies (1);
printer.print();
Verteilung und JAR-Dateien
jPDFWriter wird vollständig in einer einzigen JAR-Datei ausgeliefert; jPDFWriter.jar, diese wird mit dem Evaluationsbeispiel installiert. Wenn eine Anwendung, die jPDFWriter enthält, verteilt werden soll, muss, damit die Anwendung läuft, die jPDFWriter.jar-Datei zusammen mit ihr verteilt und in den Classpath aufgenommen werden.