itext
Kolommen: iText 5 versus iText 7
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:
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:
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 .