Die IText-API dient zur Erstellung von PDF-Documenten. Der Umgang mit dieser Bibliothek ist recht einfach.
Zunächst sind die erforderlichen Bibliotheken dem Projekt hinzuzufügen. Die eigentliche iText Lib ist hier erhältlich, die benötigten Zusatzbibliotheken findet man hier
Die Bibliothek steht auch für C# zur Verfügung
Zur Erstellung eines PDFs werden unterschiedliche Elemente benötigt. Für den Anfang sind das
- Chunk
- Phrase
- Paragraph
Unter einem Chunk versteht man die kleinste textuelle Einheit die eigene Attribute wie Farbe, Background und Font besitzen kann.
Eine Phrase ist eine Liste von Elemente. Sie kann mehrere Elemente enthalten, die dann nacheinander dargestellt werden.
Ein Paragraph umgibt ein Element wie beispielsweise einen Chunk oder eine Phrase mit einem Absatz.
Ein Beispiel zu Ausgabe eines Textes mit unterschiedlichen Attributen:
Die benötigten Fonts sollten für den einfacheren Zugriff als Klassenvariablen definiert werden. Zu beachten ist, dass die Klasse Font aus der iText-Bibliothek zu nutzen ist (com.itextpdf.text.Font):
Zunächst wird das Doument (com.itextpdf.text.Document) erstellt
Wir legen eine Größe von DIN A4 fest. Die übrigen Parameter legen das Margin der Seite fest.
Im nächsten Schritt holen wir uns die Instanz des PDFWriters, weisen diesem das Document zu und den OutputStream, in dem das PDF erzeugt wird. In diesem Fall eine Datei im Filesystem. Ohne weiteres kann die Ausgabe in einem Browser erfolgen.
Nun erst wird das Dokument geöffnet
Wir erstellen mehrere Texte und fügen diese einer Phrase zu
Die erstelle Phrase wird einem Paragraph zugeordnet und dieser nunmehr dem zu erstellenden Document hinzugefügt.
Die Eigenschaften des Documentes können ergänzt werden.
Das Document und er Writer werden geschlossen.
Um das Ergebnis zu sehen, öffnen wir das PDF.
Hier die komplette Klasse
Weitere Themen wären, die Erstellung von Tabellen, veränderbare Felder, DirectContent u.a.
Wer weitere Beispiele möchte.....
Zunächst sind die erforderlichen Bibliotheken dem Projekt hinzuzufügen. Die eigentliche iText Lib ist hier erhältlich, die benötigten Zusatzbibliotheken findet man hier
Die Bibliothek steht auch für C# zur Verfügung
Zur Erstellung eines PDFs werden unterschiedliche Elemente benötigt. Für den Anfang sind das
- Chunk
- Phrase
- Paragraph
Unter einem Chunk versteht man die kleinste textuelle Einheit die eigene Attribute wie Farbe, Background und Font besitzen kann.
Eine Phrase ist eine Liste von Elemente. Sie kann mehrere Elemente enthalten, die dann nacheinander dargestellt werden.
Ein Paragraph umgibt ein Element wie beispielsweise einen Chunk oder eine Phrase mit einem Absatz.
Ein Beispiel zu Ausgabe eines Textes mit unterschiedlichen Attributen:
Die benötigten Fonts sollten für den einfacheren Zugriff als Klassenvariablen definiert werden. Zu beachten ist, dass die Klasse Font aus der iText-Bibliothek zu nutzen ist (com.itextpdf.text.Font):
Code:
private static final Font NORMAL_FONT=new Font(Font.FontFamily.TIMES_ROMAN,12,Font.NORMAL); private static final Font NORMAL_BOLD_FONT=new Font(Font.FontFamily.TIMES_ROMAN,12,Font.BOLD); private static final Font NORMAL_FONT_RED=new Font(Font.FontFamily.TIMES_ROMAN,12,Font.NORMAL,Ba seColor.RED);
Code:
Document doc=new Document(PageSize.A4,50,30,50,30);
Code:
PdfWriter writer=PdfWriter.getInstance(doc,new FileOutputStream(new File("g:\\test.pdf")));
Code:
doc.open();
Code:
Phrase textblock=new Phrase(); Chunk chunk=new Chunk("Das ist ein erster Text.",NORMAL_FONT); textblock.add(chunk); chunk=new Chunk("Das ist ein zweiter Text.",NORMAL_BOLD_FONT); textblock.add(chunk); chunk=new Chunk("Das ist ein dritter Text.",NORMAL_FONT_RED); chunk.setBackground(BaseColor.GREEN); textblock.add(chunk); textblock.add(Chunk.NEWLINE); textblock.add(Chunk.NEWLINE); chunk=new Chunk("Das ist ein vierter Text.",NORMAL_FONT); textblock.add(chunk);
Code:
doc.add(new Paragraph(textblock));
Code:
doc.addTitle("iText Test"); doc.addAuthor("wer auch immer"); doc.addCreationDate(); doc.addSubject("Hello World");
Code:
doc.close(); writer.close();
Code:
if(Desktop.isDesktopSupported()) { Desktop desktop=Desktop.getDesktop(); if(desktop.isSupported(Desktop.Action.OPEN)) { desktop.open(new File("g:\\test.pdf")); } }
Hier die komplette Klasse
Code:
public class Demo { private static final Font NORMAL_FONT=new Font(Font.FontFamily.TIMES_ROMAN,12,Font.NORMAL); private static final Font NORMAL_FONT_RED=new Font(Font.FontFamily.TIMES_ROMAN,12,Font.NORMAL,Ba seColor.RED); private static final Font NORMAL_BOLD_FONT=new Font(Font.FontFamily.TIMES_ROMAN,12,Font.BOLD); public static void main(String[] args) throws DocumentException,FileNotFoundException,IOExceptio n { Document doc=new Document(PageSize.A4,50,30,50,30); PdfWriter writer=PdfWriter.getInstance(doc,new FileOutputStream(new File("g:\\test.pdf"))); doc.open(); Phrase textblock=new Phrase(); Chunk chunk=new Chunk("Das ist ein erster Text.",NORMAL_FONT); textblock.add(chunk); chunk=new Chunk("Das ist ein zweiter Text.",NORMAL_BOLD_FONT); textblock.add(chunk); chunk=new Chunk("Das ist ein dritter Text.",NORMAL_FONT_RED); chunk.setBackground(BaseColor.GREEN); textblock.add(chunk); textblock.add(Chunk.NEWLINE); textblock.add(Chunk.NEWLINE); chunk=new Chunk("Das ist ein vierter Text.",NORMAL_FONT); textblock.add(chunk); doc.add(new Paragraph(textblock)); doc.addTitle("iText Test"); doc.addAuthor("wer auch immer"); doc.addCreationDate(); doc.addSubject("Hello World"); doc.close(); writer.close(); if(Desktop.isDesktopSupported()) { Desktop desktop=Desktop.getDesktop(); if(desktop.isSupported(Desktop.Action.OPEN)) { desktop.open(new File("g:\\test.pdf")); } } } }
Wer weitere Beispiele möchte.....
Comment