Поиск…


замечания

В iText 5 вы не можете использовать метод add() для добавления Paragraph в Document если хотите организовать контент в столбцах. Мы не можем повторно использовать код примера Text2Pdf.java (iText 5) .

Вместо этого мы должны создать объект ColumnText , мы должны добавить все объекты Paragraph к этому объекту, и как только мы закончим добавлять все содержимое, мы можем начать рендеринг этого контента с помощью метода go() . При этом мы должны отслеживать столбцы и создавать новые страницы, когда это необходимо.

Что мы зафиксировали в iText 7:

С iText 7 мы можем скопировать и вставить код из примера Text2Pdf.java (iText 7) . Мы можем продолжать использовать метод add() же, как и раньше. Если мы хотим отображать содержимое в двух столбцах, а не в одном, нам просто нужно изменить средство визуализации документов:

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

Хотите узнать больше?

Чтение Работа с RootElement, которая является главой 5 в учебнике iText 7: Building Blocks . Получите бесплатную электронную книгу!

Text2PdfColumns.java (iText 5)

Предположим, что у нас есть следующий текстовый файл: jekyll_hyde.txt

Как мы преобразуем его в PDF, который выглядит так:

введите описание изображения здесь

При использовании iText 5 вам понадобится следующий код:

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

Источник: developers.itxtpdf.com

Text2PdfColumns.java (iText 7)

Предположим, что у вас есть следующий текстовый файл: jekyll_hyde.txt

Как мы преобразуем его в PDF, который выглядит так:

введите описание изображения здесь

При использовании iText 7 вам понадобится код:

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

Источник: developers.itxtpdf.com и учебник iText 7: Building Blocks .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow