¿Que es iText?
iText es una librería para java (aunque está disponible también para el lenguaje C#), que permite generar archivos PDF de una forma muy sencilla. Dicha librería, la podemos descargar de forma gratuita desde el siguiente enlace: download.
A continuación, mostrare el código del ejemplo y posteriormente explicare de forma breve las partes claves del mismo.
A continuación, mostrare el código del ejemplo y posteriormente explicare de forma breve las partes claves del mismo.
import java.io.FileOutputStream;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfWriter;
/**
* @author Walter Herrera.
*
* Código de ejemplo, que muestra como crear un archivo PDF simple.
*/
public class Ejemplo1 {
/**
* Raíz.
*/
public static void main(String[] args) {
//Creamos la representación de una página, con un tamaño
//por defecto.
Rectangle pagina = new Rectangle(PageSize.LETTER);
//Establecemos el color de la página y reescribimos la función
//toString de la clase BaseColor para obtener el nombre del color.
pagina.setBackgroundColor(new BaseColor(java.awt.Color.LIGHT_GRAY) {
public String toString() {
return "Light Gray";
}
});
// Creamos un documento y le pasamos como parametro un objeto de
// tipo Rectangle, dicho objeto contiene las especificaciones
// de como se vera nuestra página.
Document documento = new Document(pagina);
try {
// Obtenemos una instancia de un objeto PDFWriter
PdfWriter.getInstance(documento, new FileOutputStream(
"Ejemplo1.pdf"));
documento.open();
// Generamos nuestro contenido.
String contenido = "Generación de un PDF simple:\n "
+ "\t\tAncho de página: "
+ documento.getPageSize().getWidth()
+ "\n\t\tAlto de página: "
+ documento.getPageSize().getHeight()
+ "\n\t\tColor de página: "
+ documento.getPageSize().getBackgroundColor().toString();
// Lo agregamos al documento por medio de una instancia
// de un obtjeto Paragraph.
//
documento.add(new Paragraph(contenido));
// Cerramos el documento para hacer persistente el contenido.
documento.close();
} catch (DocumentException ex) {
// Atrapamos excepciones concernientes al documento.
} catch (java.io.IOException ex) {
// Atrapamos excepciones concernientes al I/O.
}
}
}
Como primer punto, debemos de importar la libreria iText-5.0.4.jar (Es la versión más reciente) al classpath de nuestro proyecto; ya realizado lo anterior podremos hacer uso de las clases, interfaces, etc. que nos ofrece iText.
De la línea 3 a la 9, del código de ejemplo, son las importaciones básicas de las clases necesarias para la creación de nuestro archivo PDF (no mencione la línea 1 ya que es una clase bastante conicida :P), a continuación doy una breve explicación de cada una de ellas:
NOTA 2: Toda la meta-información que le agreguemos al Document debe de realizarse antes de que habramos el docuemnto (antes de la línea 44 del código de ejemplo); en caso de que se la agreguemos despues obtendremos una excepción.
NOTA 3: Después de habierto el documento podremos agregar todo el contenido que deseemos (línea 58).
NOTA 4: Una vez finalizado el ingreso del contendio tendremos que cerrar el documento para hacer persistente nuestro archivo pdf (línea 61)
- BaseColor: Nos permite crear un color ya se para la página o la fuente del documento.
- Document: Está, se podría decir que es el modelo (en base al MVC); en ellá se almacenara tanto el contenido del documento, como su meta-información. iText nos ofrece 3 constructores para inicializar un Document:
- Document(): Un documento con sus parametros por default.
- Document(Rectangle pageSize): Crea un documento, cuyo parametro establece el tamaño de la página.
- Document(Rectangle pageSize, float marginLeft, float marginRight, float marginTop, float marginBottom): Crea un documento, cuyos parametros son el tamaño de la página y los márgenes izquierdo, derecho, superior e inferior.
- PageSize: Está clase, nos ofrece una basta colección de representaciones de objetos de tipo Rectangle (Es decir, los tamaños de tipos de hojas más comunes A3, A4, Letter, Legal, etc.)
- Paragraph: Está clase, representa trozos de frases, dentro de un Document. Observando la documentación nos percatamos que nos ofrece una variedad de contructores para inicializar la misma.
- Rectangle: Está clase, es la representación geométrica y física de nuestra página; a la misma se le pueden establecer varios atributos como: el color, los bordes, etc.
- PdfWriter: Está clase, es la encargada de representar todos los elementos anexados de nuestro Document al OuputStream. Para asociar un Document y un OutputStream a un PdfWriter, disponemos del método getInstance(Document doc, OutputStream os), o bien, haciendo uso del constructor PdfWriter(Document doc, OutputStream os).
1 pulgada (inch) = 72 puntos
NOTA 2: Toda la meta-información que le agreguemos al Document debe de realizarse antes de que habramos el docuemnto (antes de la línea 44 del código de ejemplo); en caso de que se la agreguemos despues obtendremos una excepción.
NOTA 3: Después de habierto el documento podremos agregar todo el contenido que deseemos (línea 58).
NOTA 4: Una vez finalizado el ingreso del contendio tendremos que cerrar el documento para hacer persistente nuestro archivo pdf (línea 61)
Bueno espero que está breve introducción a iText les pueda servir de ayuda. Cualquier duda, comentario o corrección, pueden hacerla sin compromiso; la idea de estás futúras guias es brindarles un material de apoyo de calidad.
Exitos :D !!!!
Amigo le agradecería un pequeño ejemplo como el anterior pero pasándole como parámetros contenidos de JLabel y JTextfield, de manera que cuando se presione por ejemplo un boton que diga Crear PDF, se cree con la información contenida en los JLabel y JTextfield. Java(Eclipse)y gracias de antemano
ResponderEliminarme encataria saber como hago para q los margenes del pdf sean menores, es decir, colocar yo los margenes de la hoja
ResponderEliminarMuy buen aporte Walter.
ResponderEliminarTe dejo un link a mi blog en el cual explica esto un poco mas.
http://java-white-box.blogspot.com.ar/2013/11/itext-clases-fundamentales-en-itext.html
Saludos