Sök…


Anmärkningar

I iText 5 kan du inte använda metoden add() för att lägga till ett Paragraph i ett Document om du vill organisera innehållet i kolumner. Vi kan inte återanvända koden för texten Text2Pdf.java (iText 5) .

Istället måste vi skapa ett ColumnText objekt, vi måste lägga till alla Paragraph till detta objekt, och när vi är färdiga att lägga till allt innehåll kan vi börja rendera det innehållet med metoden go() . Samtidigt måste vi hålla reda på kolumnerna och skapa nya sidor när det behövs.

Vad vi fixade i iText 7:

Med iText 7 kan vi kopiera och klistra in koden från texten Text2Pdf.java (iText 7) . Vi kan fortsätta använda metoden add() på samma sätt som vi gjorde tidigare. Om vi vill återge innehållet i två kolumner istället för i en, måste vi enkelt ändra dokumentgivaren:

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

Vill veta mer?

Läs Arbeta med RootElement som är kapitel 5 i iText 7: Handledning för byggstenar . Skaffa gratis e-bok!

Text2PdfColumns.java (iText 5)

Anta att vi har följande textfil: jekyll_hyde.txt

Hur konverterar vi den till en PDF som ser ut så här:

ange bildbeskrivning här

När du använder iText 5, behöver du kod som denna:

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

Källa: utvecklare.itextpdf.com

Text2PdfColumns.java (iText 7)

Anta att du har följande textfil: jekyll_hyde.txt

Hur konverterar vi den till en PDF som ser ut så här:

ange bildbeskrivning här

När du använder iText 7, behöver du kod som denna:

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

Källa: utvecklare.itextpdf.com och iText 7: Handledning för byggstenar .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow