itext
Spalten: iText 5 vs. iText 7
Suche…
Bemerkungen
In iText 5 können Sie die add()
Methode nicht verwenden, um einem Document
einen Paragraph
hinzuzufügen, wenn Sie den Inhalt in Spalten organisieren möchten. Der Code des Beispiels Text2Pdf.java (iText 5) kann nicht wiederverwendet werden.
Stattdessen müssen wir ein ColumnText
Objekt erstellen. Wir müssen diesem Objekt alle Paragraph
Objekte hinzufügen. ColumnText
alle Inhalte hinzugefügt haben, können Sie den Inhalt mit der go()
Methode darstellen. Dabei müssen wir die Spalten nachverfolgen und bei Bedarf neue Seiten erstellen.
Was wir in iText 7 behoben haben:
Mit iText 7 können wir den Code aus dem Beispiel für Text2Pdf.java (iText 7) kopieren und einfügen. Wir können die add()
-Methode auf die gleiche Weise wie zuvor verwenden. Wenn wir den Inhalt in zwei Spalten und nicht in einer Spalte darstellen möchten, müssen wir einfach den Dokumentrenderer ändern:
Rectangle[] columns = {
new Rectangle(36, 36, 254, 770),
new Rectangle(305, 36, 254, 770)};
document.setRenderer(new ColumnDocumentRenderer(document, columns));
Möchten Sie mehr wissen?
Lesen Sie den Abschnitt Arbeiten mit dem RootElement (Kapitel 5) im Tutorial zu iText 7: Building Blocks . Holen Sie sich das kostenlose E-Book!
Text2PdfColumns.java (iText 5)
Angenommen, wir haben die folgende Textdatei: jekyll_hyde.txt
Wie konvertieren wir es in ein PDF, das so aussieht:
Wenn Sie iText 5 verwenden, benötigen Sie folgenden Code:
public void createPdf(String dest)
throws DocumentException, IOException {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
ColumnText ct = new ColumnText(writer.getDirectContent());
BufferedReader br = new BufferedReader(new FileReader(TEXT));
String line;
Paragraph p;
Font normal = new Font(FontFamily.TIMES_ROMAN, 12);
Font bold = new Font(FontFamily.TIMES_ROMAN, 12, Font.BOLD);
boolean title = true;
while ((line = br.readLine()) != null) {
p = new Paragraph(line, title ? bold : normal);
p.setAlignment(Element.ALIGN_JUSTIFIED);
title = line.isEmpty();
ct.addElement(p);
}
Rectangle[] columns = {
new Rectangle(36, 36, 290, 806), new Rectangle(305, 36, 559, 806)
};
int c = 0;
int status = ColumnText.START_COLUMN;
while (ColumnText.hasMoreText(status)) {
ct.setSimpleColumn(columns[c]);
status = ct.go();
if (++c == 2) {
document.newPage();
c = 0;
}
}
document.close();
}
Quelle: developer.itextpdf.com
Text2PdfColumns.java (iText 7)
Angenommen, Sie haben die folgende Textdatei: jekyll_hyde.txt
Wie konvertieren wir es in ein PDF, das so aussieht:
Wenn Sie iText 7 verwenden, benötigen Sie folgenden Code:
public void createPdf(String dest) throws IOException {
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
Document document = new Document(pdf)
.setTextAlignment(TextAlignment.JUSTIFIED);
Rectangle[] columns = {
new Rectangle(36, 36, 254, 770),
new Rectangle(305, 36, 254, 770)};
document.setRenderer(new ColumnDocumentRenderer(document, columns));
BufferedReader br = new BufferedReader(new FileReader(TEXT));
String line;
PdfFont normal = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);
PdfFont bold = PdfFontFactory.createFont(FontConstants.TIMES_BOLD);
boolean title = true;
while ((line = br.readLine()) != null) {
document.add(new Paragraph(line).setFont(title ? bold : normal));
title = line.isEmpty();
}
document.close();
}
Quelle: developer.itextpdf.com und das Tutorial zu iText 7: Bausteine .