Si lloras por haber perdido el sol, las lágrimas no te dejarán ver las estrellas
R. Tagore

iText, librería para generar ficheros PDF

iText in ActioniText es una librería Java gratuita que permite generar ficheros en formato PDF desde nuestro código Java.

En su contra diré que el código es difícil de generar (y de mantener) cuando queremos presentar muchos datos y listados, ya que su filosofía de funcionamiento es similiar al elemento <table> de HTML: para estructuras complejas tenemos que anidar elementos.

Además no existe el concepto rowspan, con lo cual tenemos que anidar más elementos.

Nos permite asociar código a eventos, como :

public class Eventos extends PdfPageEventHelper {

  public void onOpenDocument(PdfWriter writer, Document document) {
     
 

  public void onCloseDocument(PdfWriter pdfwriter, Document document){

  }

  public void onStartPage(PdfWriter pdfwriter, Document document){

     

  }

  public void onEndPage(PdfWriter pdfwriter, Document document){

      ..

  }

}

Más ejemplo de código:

Font bf = BaseFont.createFont(contextPath.getRealPath("/pdf/fonts/") + "/arial.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED);

Font fh8 = new Font(bf,9.5f, Font.NORMAL, new Color(0×33, 0×33, 0×33));

Font fb10 = new Font(bf, 10.5f, Font.BOLD, Color.black);

 

 tabla.setSpacingBefore(0);

 tabla.deleteBodyRows();

 PdfPTable t = new PdfPTable(1);

 t.setWidthPercentage(100);

 t.getDefaultCell().setPadding(4);

 t.getDefaultCell().setBorderWidth(0.4f);

 t.getDefaultCell().setVerticalAlignment(Element.ALIGN_TOP);

 t.getDefaultCell().setLeading(3,1.3f);

 PdfPTable tAux = getTableAuxDatosPropu(new float[]{4,29,67});

 tAux.getDefaultCell().setColspan(3);

 HashMap hAux = gestionSolicitud.datosRepresentante(cod_solicitud,"3");

 tAux.addCell(getPhraseLabelValor("NOMBRE:", hAux, "NOMBRE"));

 tAux.addCell( (new Phrase("CARGO: ", fb10)).add(new Chunk( ((hAux==null ||hAux.get("CARGO")==null)?"":String.valueOf(hAux.get("CARGO"))), fh8)) );

  t.addCell(tAux);

 tabla.addCell(t);

Más en:

3 Comentarios hasta el momento »

  1. Lycka Bonita » iReport dijo

    10 de June del 2008 a las 3:07 pm

    [...] hablé de iText como herramienta para generar ficheros PDF desde Java. Su gran debilidad es su forma de componer el [...]

  2. Patricia dijo

    6 de November del 2008 a las 9:47 pm

    Hola que tal estoy trabajando con Itext aunque no muy bien con tablas ya que ejecuto una cosulta de la base de datos de donde me trae valores mi duda es como le hago para que me aparezcan dentro de una tabla. Te agradeceria cualquier cosa que me ayudara. Ah cabe mencionar que ya utilice listas y me despliega favorablemente los datos de la consulta. Bueno gracias yo espero alguna respuesta.

    Bye Paty

  3. yoyoooyoy dijo

    7 de November del 2008 a las 9:44 am

    Hola Patricia,

    no sé si he entendido muy bien tu duda. Te recomiendo que primero recuperes todos los datos que necesites y luego los “pintes” con iText.

    En el ejemplo, haux es un Hashmap con los datos que necesitamos pintar. (Yo prefiero utilizar objetos, pero para el ejemplo vale)

    Para pintar una frase (objeto Phrase en iText) utiliza simplemente el constructor Phrase (String) dentro de cada celda.

    Si quieres algo más editado, como poner una etiqueta y un valor, yo utilizaba mi método propio Phrase getPhraseLabelValor(String label, HashMap h, String keyVal), y no mostraba su implementación. Ahora pinto el cargo con la implementación para que lo veas. fb10 y fh8 son tipos de fuente que he definido previamente.

    Más documentación la puedes encontrar en el libro “iText in Action” o en la web del autor http://www.lowagie.com/iText/

    Espero que te sirva esto !

Comentarios RSS · TrackBack URI

Dejanos tu Comentario

Nombre: (Requerido)

E-Mail: (Requerido)

Sitio WEB:

Comentario: