Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2004  »  11  »  Java-Akrobatik  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

PDFs mit Java erstellen und bearbeiten

Java-Akrobatik

von Bernhard Bablok
Erschienen im Linux-Magazin 2004/11

PDF-Dateien selbst schreiben ist mit freier Software kein Problem. Wer mit Java ein PDF erzeugen möchte, muss nicht mal zu externen Programmen greifen: Das freie Projekt I-Text bietet alles, was dafür notwendig ist. Die neueste Version unterstützt auch XML-Formate.

Der Erfolg des PDF-Formats hat zwei Gründe: Zum einen gab es immer kostenlose Acrobat Reader, zum anderen bietet das Format einige Vorteile: Hyperlinks, eingebettete Bilder, Formularverarbeitung, Metadaten, Verschlüsselung und gute Drucktreue der Dokumente. Das Projekt I-Text[1] des Belgiers Bruno Lowagie stellt ein Java-API für die Erzeugung von PDF-Dateien bereit. Es handelt sich um eine Bibliothek, nicht um ein Satz- oder Layoutsystem.

Damit eignet es sich für die programmgesteuerte Ausgabe von strukturierten Daten, weniger als Allroundwerkzeug für PDF-Dateien. Wer volle Kontrolle über die Ausgabe haben möchte, wird mit I-Text zwar Erfolg haben, aber nicht unbedingt glücklich werden. Dieser Coffee-Shop führt das I-Text-API anhand einfacher Beispiele ein. Wer tiefer einsteigen will, kommt nicht darum herum, das recht gute Tutorial zu studieren. Außerdem gibt es verschiedene Tutorials zu I-Text ([2], [3]), die sich zum Beispiel damit beschäftigen, wie man mit Servlets PDF-Dateien erzeugt.

Download und Installation

Das I-Text-Paket an sich ist relativ kompakt (705 KByte Quellen). Die Bibliothek besteht aus zwei Jar-Dateien (»itext-1.02b.jar« und »iTextHYPH.jar«) mit zusammen 1,1 MByte. Wer die Javadoc-Dokumentation nicht selbst generieren möchte, findet die fertigen HTML-Seiten (1,2 MByte) ebenfalls online. Weiterhin ist ein Paket mit dem Tutorial (91 KByte) und den zugehörigen Beispielen (1,7 MByte) verfügbar. All dies gibt es auf der Homepage[1] des I-Text-Projekts (wobei die eigentlichen Dateien auf Sourceforge liegen). Dort findet sich auch eine experimentelle XML-Unterstützung. Ein praktisches All-in-one-Paket fehlt leider.

Die Installation ist denkbar einfach: Die Jar-Dateien gehören in den »CLASSPATH« der Anwendung. Bei der Installation des Tutorials muss man etwas Acht geben, sonst stimmen die relativen Links nicht:

mkdir -p /usr/local/iText/tutorial
mkdir -p /usr/local/iText/examples
tar -xvzf itext-tutorial-0.94.tar.gz -C /usr/local/iText/tutorial
tar -xvzf itext-examples.tar.gz -C /usr/local/iText/examples

Für Selbstkompilierer ist allerdings Handarbeit angesagt, da das Paket weder Makefile noch Ant-Datei enthält. Die erforderlichen Schritte zeigt Listing 1. Alternativ findet sich ein Ant-Buildfile »build.xml« auf der Projekt-Homepage. Damit lässt sich sogar der Code herunterladen:

ant download.site

Jar-Files erzeugt man mit »ant jar« respektive »ant jarWithXML« für die Version mit XML-Unterstützung. Das I-Text-Paket steht unter einer dualen Lizenz: Zur Wahl stehen die LGPL oder die Mozilla Public License.

Listing 1: I-Text selbst bauen
01 mkdir -p /tmp/iText/src
02 mkdir -p /tmp/iText/build
03 tar -xvzf itext-src-1.02b.tar.gz -C /tmp/iText/src
04 cd /tmp/iText
05 javac -d build `find src -type f -name *.java`
06 cd src
07 find . -name *.afm -exec cp -v --parents {} ../build ;
08 cd ..
09 jar -cf itext.jar -C build .

Hello World

Den Einstieg in die I-Text-Programmierung verschafft ein erweitertes Hello-World-Beispiel, siehe Listing 2. Das Programm liest von der Standardeingabe und übergibt den daraus erzeugten String an I-Text. Wer zum Beispiel per Pipe das GPL-Dokument ins Programm schreibt, erhält das in Abbildung 1 dargestellte Ergebnis.

Listing 2: »SimplePdf.java«
22 import java.io.*;
23
24 import com.lowagie.text.*;
25 import com.lowagie.text.pdf.*;
26
34 public class SimplePdf {
35
38   public static void main(String[] args) {
39     try {
40       SimplePdf pdf = new SimplePdf();
41       Document document = new Document();
42       PdfWriter.getInstance(document,new FileOutputStream("SimplePdf.pdf"));
43       document.open();
44       document.add(new Paragraph(pdf.getLines()));
45       document.close();
46     } catch (Exception e) {
47       e.printStackTrace();
48     }
49  }
50
51   /////////////////////////////////////////////////////
52
57   private String getLines() throws IOException {
58     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
59     StringBuffer result = new StringBuffer();
60     String line;
61     while((line = reader.readLine()) != null)
62       result.append(line).append("n");
63     return result.toString();
64   }
65 }


Abbildung 1: Das Programm aus Listing 2 zeigt den GPL-Wortlaut im PDF-Format.

Vom notwendigen Drumherum einmal abgesehen passiert das Interessante in den Zeilen 41 bis 45. Etwas ungewöhnlich und erklärungsbedürftig ist dabei die Zeile 42. Dieser Methodenaufruf verknüpft das Dokument mit einer »PdfWriter«-Instanz. Eine »Document.addWriter()«- oder »PdfWriter.setDocument()«-Methode wäre klarer.

Für die wenigen Codezeilen sieht das Ergebnis schon ganz passabel aus. Wie es sich noch verfeinern lässt, zeigen die folgenden Beispiele.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Zahlen zeigen Daten aufbereiten mit JFreereport
Gesetzte Typen Fonts unter Java
Per Knopfdruck dokumentieren Javadoc professionell nutzen
Malen nach Zahlen Mit JFreechart Diagramme zeichnen
PDF nach Maß PDF-Dateien unter Linux konvertieren und bearbeiten
Kleiner Helfer, ganz groß Eigene Ant-Erweiterungen schreiben
Whitepaper
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

Download PDF (Registrierung erforderlich)
Kommentare (1)
von
Gosch Andreas,
28.09.2011 10:58
Hervorragendes Paper
Ich habe auf dieser Seite endlich eine Anleitung gefunden wie ich sie schon lange gesucht habe.