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:

Geben Sie hier die Bildbeschreibung ein

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:

Geben Sie hier die Bildbeschreibung ein

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 .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow