iText - ¿Como generar un PDF con iText? - Clases fundamentales en iText - ¿Como ingresar texto a un PDF con iText?
Continuando con nuestros pasos por iText (Link introducción a itext), hoy vamos a ensuciarnos un poco viendo código.
Para agregar párrafos al documentos iText nos brinda la clase Paragraph.
Bueno espero que les allá resultado fácil y entendible! Cualquier cosa me comentan.
Saludos
Antes de comenzar a codificar vamos hablar de las clases fundamentales y su funcionamiento.
Clases fundamentales en iText
- com.lowagie.text.Document: Es la clase principal para la generación de documentos PDF. Esta es la primera clase que es instanciada. Una vez que el documento es creado, se deberá proceder a escribir dentro de él. Contiene el tamaño y margenes del documento.
- com.lowagie.text.pdf.PdfWriter: Es la clase que permite escribir en el PDF.
- com.lowagie.text.Paragraph: Es la clase que representa el párrafo a escribir.
- com.lowagie.text.Chapter: Es la clase que representa un capítulo en el documento PDF. Este es creado utilizando un párrafo como título y un entero como número del capítulo.
- com.lowagie.text.Font: esta clase contiene todas las especificaciones de las fuentes, tamaños, estilos y colores de las letras a utilizar en el documento. Varias de las fuentes son declaradas estáticamente en esta clase.
¿Como generar un PDF con iText?
Como dijimos mas arriba, lo primero que tenemos que hacer es una instancia de la clase Document.
Document documento = new Document();
Esta clase contiene los siguientes constructores:
- Document(): Constructor que utiliza por defecto el tipo de hoja A4.
- Document(Rectangle pageSize): Constructor al cual se le pasa por parámetro el tamaño de hoja y toma por defecto los margenes 36, 36, 36, 36.
- Document(Rectangle pageSize, float marginLeft, float marginRight,float marginTop, float marginBottom): Constructor al cual se le pasa por parámetro el tamaño de la hoja y los margenes a gusto.
Tenemos que definir el tipo de documento que vamos a escribir.
- PdfWriter getInstance(final Document document, final OutputStream os): Constructor en el cual se le pasa el documento el cual se va a escribir (document) y el path de salida del pdf generado, incluyendo en el mismo el nombre del pdf el cual se generar y la extensión .pdf.
- DocumentException: Excepción producida en la generación del documento.
- IOException: Excepción producida por algún error con el archivo de salida, pudiendo ser de lectura y/o escritura.
"(En versiones viejas de iText se podía usar escritores RTF y HTML, pero a partir de la versión 5.0 ya no hay soporte para los mismos)."
A modo de ejemplo le pasare el documento previamente generado y el nombre del archivo el cual sera "Ejemplo.pdf". (Al poner el nombre del archivo sin la ubicación completa lo generara en el mismo lugar donde se esta ejecutando.)
PdfWriter.getInstance(documento, new FileOutputStream("Ejemplo.pdf"));
A modo de ejemplo le pasare el documento previamente generado y el nombre del archivo el cual sera "Ejemplo.pdf". (Al poner el nombre del archivo sin la ubicación completa lo generara en el mismo lugar donde se esta ejecutando.)
PdfWriter.getInstance(documento, new FileOutputStream("Ejemplo.pdf"));
Una vez configurada la estructura del documento, se debe abrir antes de comenzar a insertar párrafos, textos, figuras, etc.
documento.open();
"No se puede agregar Meta-Información o escribir el header luego que se haya abierto el archivo."
Esta clase contiene los siguientes constructores:
- Paragraph(String string): El constructor recibe por parámetro una cadena, la cual representa el texto a ingresar.
- Paragraph(String string, Font font): El constructor recibe por parámetro una cadena, la cual representa el texto a ingresar y tambien el tipo de fuente.
- Paragraph(Phrase phrase): El constructor recibe por parámetro otro párrafo.
Paragraph parrafo = new Paragraph("Ejemplo de iText - El lado oscuro de java");
Una ves que obtuvimos el párrafo solo quedaría agregarlo al documento.
documento.add(parrafo);
Finalmente cerramos el documento.
Código completo:
Saludos
iText - ¿Como generar un PDF con iText? - Clases fundamentales en iText - ¿Como ingresar texto a un PDF con iText?
Reviewed by El lado oscuro de java
on
noviembre 19, 2013
Rating:
Disculpa amigo no tienes una clase que me ayude a leer un PDF
ResponderEliminary luego obtener linea por linea los párrafos del documento... Por favor es algo que necesito urgente. Gracias!
Hola amigo Leonel puedo decirte como leer un pdf ya creado con itext pero todavía no he llegado a ver la parte de lectura párrafo por párrafo. Avísame y cualquier cosa te envió las lineas de código. Saludos
EliminarBuenas noches amigo me podrias indicar como leer un pdf creado con itext, gracias de ante mano
EliminarHola Luis disculpa la demora, mira es algo que tengo pendiente para nuevos post el tema de leer pdf ya generados, pero te podes ir adelantando mirando esta clase PdfReader. Saludos
EliminarUna pregunta amigo.. hay manera de con itext enumerar las lineas de cada parrafo de mi pdf???
ResponderEliminarHola Alex, fijate si es esto lo que estas buscando.
Eliminarhttp://java-white-box.blogspot.com.ar/2013/12/itext-clase-list-en-itext-clase.html
Saludos
Hola Como estas?
ResponderEliminarLa verdad muy bueno este resumen de las principales clases. Podrias indicar como hago al momento de crear un document para unificar PDF, tenga la opcion de bajar la calidad de la imagen? te paso el codigo que estoy trabajando.:
PdfReader localPdfReader = new PdfReader(output.toByteArray());// en el out.toByteArray estoy pasandolo los pdf que se van a unificar.
com.lowagie.text.Document localDocument = new com.lowagie.text.Document(localPdfReader.getPageSizeWithRotation(1));
localPdfCopy = new PdfCopy(localDocument, new FileOutputStream(archivoUni));
localDocument.open();
this.setLocalPdfCopy(localPdfCopy);
la idea en si es que el document tenga la forma de indicarle de bajarle la calidad y disminuir el tamaño en si del PDF.
desde ya muchas gracias
Pablo.
Hola Pablo, mira es algo que tengo pendiente para nuevos post el tema de leer pdf ya generados, pero la idea para bajarle la calidad de la imagen se me ocurren 2 cosas, primero intenta encontrar la imagen y convertirla a otro tipo de formato ejemplo si es bmp pasala a jpg, si bien disminuye un poco la calidad pero lo haces mas lijero, y si no trata de convertilo despues de generado el documento a un zip. de manera que el usuario final reciba algo de menos peso, coméntame en que estas trabajando puntualmente y veo si te puedo dar una mano. Yo particularmente trabaje en la generación de los resúmenes de tarjetas de crédito. (3.000.000 de usuarios.) .
Eliminarhola, disculpa me genera un error en FileOutputStream me dice cannot be resolved to a type, no se porque, me podrias ayudar, gracias
ResponderEliminarHola Jorge, mira no estas trayendo los imports necesarios, en este caso necesitas el import java.io.FileOutputStream. Si programas con el IDE eclipse se resuelve presionando Ctrol+Shift+O, si no agregra el import "import java.io.FileOutputStream;"
EliminarSaludos
hola amigo me puedes ayudar a aumentar el tamaño de las tablas
ResponderEliminarhola amigo, fijate si esto te sirve de algo sino me comentas y apenas tenga un rato te presto una mano.
Eliminarhttp://java-white-box.blogspot.com.ar/2014/03/itext-pdfptable-como-agregar-una-tabla.html
yo tengo una pregunta
ResponderEliminarcomo pones dos imagenes y un pequeño texto en una tabla
hola,
ResponderEliminarme podría colaborar con la librería itext.
estoy tratando de crear columnas en el documento generado. en el documento no en tabla. alguna recomendación.
Gracias
Buenas tardes. Muchas gracias por la información que publicas, me a ayudado mucho, pero tengo una duda fíjate que quiero mover un texto en dimensiones XY dentro de documento, pero estoy buscando y no encuentro como poder hacerlo. De nuevo gracias por si me poder ayudar con esta duda.
ResponderEliminarHola tengo un problem al generar pdf con itext, mi problema es el siguiente y es que empieza a escribir el contenido del pdf en la cabecera ¿hay alguna manera de solucionar esto?.
ResponderEliminar