itext
Estilos: iText 5 contra iText 7
Buscar..
Observaciones
Crear un documento en el que tiene que cambiar entre estilos con frecuencia tiende a ser tedioso en iText 5. Necesita crear muchos objetos Chunk y siempre debe hacer un intercambio entre aplicar los estilos directamente a cada Chunk nuevo o crear un método auxiliar que crea el Chunk para ti.
Lo que arreglamos en iText 7:
Ahora es posible encadenar métodos. setFont() , setFontSize() , addStyle() y otros métodos devuelven el objeto en el que se invocan. Agregar un Paragraph involucra diferentes estilos ahora se puede hacer en una línea:
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("."));
Al usar el objeto Style , ahora también puede aplicar diferentes propiedades (fuente, color de fuente, color de fondo, tamaño de fuente, ...) de una sola vez con el método addStyle() .
¿Quiere saber más?
Lea Introducción a la clase PdfFont, que es el capítulo 1 del tutorial de iText 7: Building Blocks . ¡Consigue el ebook gratis!
HelloWorldStyles.java (iText 5)
En este ejemplo de iText 5, necesitamos cambiar entre diferentes estilos en el mismo documento:
La mejor manera de hacer esto en iText 5, es crear un método de conveniencia que cree un Chunk en el estilo que se debe usar con frecuencia; ver el método createBgChunk() :
public Chunk createBgChunk(String s, Font font) {
Chunk chunk = new Chunk(s, font);
chunk.setBackground(BaseColor.LIGHT_GRAY);
return chunk;
}
Ahora podemos usar este método en el código que crea el 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();
}
Fuente: developers.itextpdf.com
HelloWorldStyles.java (iText 7)
En este ejemplo de iText 7, necesitamos cambiar entre diferentes estilos en el mismo documento:
La mejor manera de lograr esto en iText 7, es crear un objeto de Style y aplicar ese Style a un objeto de Text :
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("."));
}
}
Fuente: developers.itextpdf.com y el tutorial de iText 7: Building Blocks .

