Zoeken…


Opmerkingen

In iText 5 kunt u de methode add() niet gebruiken om een Paragraph aan een Document toe te voegen als u de inhoud in kolommen wilt ordenen. We kunnen de code van het voorbeeld Text2Pdf.java (iText 5) niet opnieuw gebruiken.

In plaats daarvan moeten we een ColumnText object maken, moeten we alle Paragraph objecten aan dit object toevoegen en als we klaar zijn met het toevoegen van alle inhoud, kunnen we beginnen met het renderen van die inhoud met behulp van de methode go() . Daarbij moeten we de kolommen bijhouden en indien nodig nieuwe pagina's maken.

Wat we hebben opgelost in iText 7:

Met iText 7 kunnen we de code uit het voorbeeld Text2Pdf.java (iText 7) kopiëren en plakken. We kunnen de add() -methode op dezelfde manier blijven gebruiken als voorheen. Als we de inhoud in twee kolommen in plaats van in één willen weergeven, moeten we de documentrender eenvoudig wijzigen:

Rectangle[] columns = {
    new Rectangle(36, 36, 254, 770),
    new Rectangle(305, 36, 254, 770)};
document.setRenderer(new ColumnDocumentRenderer(document, columns));

Wil meer weten?

Lees Werken met het RootElement dat hoofdstuk 5 is in de iText 7: Bouwstenen tutorial. Ontvang het gratis ebook!

Text2PdfColumns.java (iText 5)

Stel dat we het volgende tekstbestand hebben: jekyll_hyde.txt

Hoe converteren we het naar een PDF die er als volgt uitziet:

voer hier de afbeeldingsbeschrijving in

Wanneer u iText 5 gebruikt, hebt u deze code nodig:

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();
}

Bron: developers.itextpdf.com

Text2PdfColumns.java (iText 7)

Stel dat u het volgende tekstbestand hebt: jekyll_hyde.txt

Hoe converteren we het naar een PDF die er als volgt uitziet:

voer hier de afbeeldingsbeschrijving in

Wanneer u iText 7 gebruikt, hebt u deze code nodig:

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();
}

Bron: developers.itextpdf.com en de tutorial iText 7: Building Blocks .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow