itext
Столбцы: iText 5 по сравнению с iText 7
Поиск…
замечания
В 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 .