itext
Stili: iText 5 contro iText 7
Ricerca…
Osservazioni
La creazione di un documento in cui devi passare da uno stile all'altro tende a essere noioso in iText 5. Devi creare molti oggetti Chunk
e devi sempre fare un compromesso tra applicare gli stili direttamente a ogni nuovo Chunk
o creare un metodo di supporto che crea il Chunk
per te.
Cosa abbiamo risolto in iText 7:
Ora è possibile concatenare metodi. setFont()
, setFontSize()
, addStyle()
e altri metodi restituiscono tutti l'oggetto su cui sono stati richiamati. L'aggiunta di un Paragraph
coinvolge diversi stili può ora essere eseguita in un'unica riga:
document.add(
new Paragraph()
.add("In this example, named ")
.add(new Text("HelloWorldStyles").addStyle(style))
.add(", we experiment with some text in ")
.add(new Text("code style").addStyle(style))
.add("."));
Usando l'oggetto Style
, ora puoi anche applicare diverse proprietà (font, colore del font, colore di sfondo, dimensione del font, ...) in un addStyle()
solo con il metodo addStyle()
.
Voglio sapere di più?
Leggi Introduzione alla classe PdfFont, che è il capitolo 1 del tutorial di iText 7: Building Blocks . Ottieni l'ebook gratuito!
HelloWorldStyles.java (iText 5)
In questo esempio di iText 5, è necessario passare da uno stile all'altro nello stesso documento:
Il modo migliore per farlo in iText 5 è creare un metodo di convenienza che crei un Chunk
nello stile che deve essere usato frequentemente; guarda il metodo createBgChunk()
:
public Chunk createBgChunk(String s, Font font) {
Chunk chunk = new Chunk(s, font);
chunk.setBackground(BaseColor.LIGHT_GRAY);
return chunk;
}
Ora possiamo usare questo metodo nel codice che crea il PDF:
public void createPdf(String dest)
throws DocumentException, IOException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
Font code = new Font(FontFamily.COURIER, 12, Font.NORMAL, BaseColor.RED);
Paragraph p = new Paragraph("In this example, named ");
p.add(createBgChunk("HelloWorldStyles", code));
p.add(", we experiment with some text in ");
p.add(createBgChunk("code style", code));
p.add(".");
document.add(p);
document.close();
}
Fonte: developers.itextpdf.com
HelloWorldStyles.java (iText 7)
In questo esempio di iText 7, è necessario passare da uno stile all'altro nello stesso documento:
Il modo migliore per raggiungere questo obiettivo in iText 7, è quello di creare uno Style
oggetto, e di applicare quello Style
a un Text
oggetto:
public void createPdf(String dest) throws IOException {
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfFont code = PdfFontFactory.createFont(FontConstants.COURIER);
Style style = new Style()
.setFont(code)
.setFontSize(12)
.setFontColor(Color.RED)
.setBackgroundColor(Color.LIGHT_GRAY);
try (Document document = new Document(pdf)) {
document.add(
new Paragraph()
.add("In this example, named ")
.add(new Text("HelloWorldStyles").addStyle(style))
.add(", we experiment with some text in ")
.add(new Text("code style").addStyle(style))
.add("."));
}
}
Fonte: developers.itextpdf.com e il tutorial di iText 7: Building Blocks .