En la actualidad me encuentro realizando una aplicación en PHP donde necesitamos sacar unos ficheros en php.
En principio hay que decir que hay muchos componentes y librerÃas para hacer los PDFs en PHP, pero aquà solo me voy a centrar en hablar de las soluciones que he encontrado libres y daré mi opinión sobre el tema.
Antes de nada piensa qué es lo que tienes que sacar en PDF, puesto que dependiendo de la forma que generas el PDF será más sencillo o más difÃcil de mantener la aplicación.
RTF (Ritch Text Format)
Lo ideal es utilizar ficheros RTF como plantilla, se pueden hacer desde un fichero de Microsoft Word o desde el Writer del OpenOffice.
La ventaja de esta técnica de generar PDFs es que las plantillas RTFs son muy fáciles de mantener, sólo hay que poner unos tags dentro del fichero, y como los RTFs son ficheros de texto, se pueden abrir desde PHP, guardarlos en una variable y cambiar lo que se quiera, para luego guardarlo en otro fichero RTF.
El problema de esta técnica es que en PHP no hay componentes o clases que te permitan hacerlo desde el Apache, sin instalar software adicional, con lo que en los hosting compartidos esta opción es inviable, o al menos yo no lo he encontrado (he buscado componentes de pago, pero los que encontré eran realmente caros y ya no me compensaban). La opción económica para hacer este caso es tener un hosting privado e instalar la OpenOffice y creo que unos paquetes especiales de la OpenOffice, para asà poder utilizar el Writer en modo consola y transformar el fichero RTF a PDF.
FPDF [1]
La FPDF (FreePDF) es una implementación gratuita de la PDFLib (que es de pago), aunque la PDFLib hoy en dÃa trae añadidos de seguridad del fichero PDF generado, como imposibilidad de copiar, de imprimir, cifrado, …
Esta es la librerÃa PHP principal que vamos a ver, puesto que las demás que vamos a ver son librerÃas que heredan de ella, en algunos casos modifican un poco el código para optimizar o facilitar el uso de la extensión de la librerÃa.
De todas las que he encontrado es la que mejor está documentada, aunque en todas las librerÃas se pueden encontrar un directorio con ejemplos.
En esta librerÃa para generar un PDF tenemos que programar el contenido del PDF.
Una de las ventajas de esta librerÃa es que como es de las más usadas, tiene una pagÃna donde podemos ver ejemplos de scripts para hacer funcionalidades que no están dentro de la librerÃa, la sección Scripts de la web [2].
Por último, decir que aquellos que seais unos multiprogramadores como yo, hay una implementación de la libreria para ASP 3.0 [3]. Yo no la he probado, si alguien lo prueba por favor que me comente algo.
HTML2PDF [4]
Esta librerÃa es una extensión de la FPDF, que nos permite poner como contenido del PDF un documento XHTML. Por desgracia la poca documentación que hay está en un foro en Francés y todavÃa esta en desarrollo, puesto que hay muchos estilos de CSS que no los reconoce.
Es una buena alternativa a los RTFs cuando se quiere hacer una plantilla que va a ser modificada cada cierto tiempo, puesto que modificar un XHTML es muy sencillos con programas como el Adobe DreamWeaver o Microsoft Expresions, o incluso la Microsoft Office o la OpenOffice, aunque para estas dos últimas opciones necesitaremos retocar el código para adaptarlo al código que interpreta la clase.
Tiene pocos ejemplos, pero la verdad es que son suficientes para enseñar las cosas que hace esta librerÃa PHP.
TCPDF [5]
Sin dudas una de las mejores extensiones a la librerÃa FPDF. En su web encontramos una amplia documentación, además es la librerÃa que tiene más ejemplos, un total de 36 ejemplos en el ZIP que nos descargamos desde la web. Además de las cosas tÃpicas que nos permiten todas las librerÃa que he encontrado (insertar código html, cabeceras, pies, …) nos permite crear Códigos de barras para insertarlos en los documentos PDFs que vamos a mostrar. En algunas ocaciones esto es muy útil.
Una cosa que he visto que no he encontrado en otras librerÃas de PHP es que tiene soporte para incrustar JavaScript para la comprobación de datos de los formularios para los PDFs generados.
Por último decir que esta librerÃa soporta texto Unicode UTF8, con lo que nos permite realizar documentos PDFs en caracteres no indoeuropeos, como el árabe, ruso o chino.
mPDF [6]
Esta librerÃa al igual que la anterior también está muy bien documentada y en inglés. Esta librerÃa es una extensión de la FPDF que soporta texto Unicode UFT-8, y está especializada en este aspecto. A primera vista, no la he probado todavÃa, es muy similar a la librerÃa anterior (TCPDF). Una de las cosas que más me han sorprendido es que esta librerÃa es la que más fuentes trae por defecto, de echo el fichero zip de todas las demás librerÃas apenas llega a los 1Mb, esta librerÃa tienen un zip de 11Mb. Esta cantidad de Mb se deben a las fuentes y a los ejemplos, que también tiene un motón de ejemplos.
Conclusión
Hemos visto en este artÃculo una librerÃa y cuatro extensiones de ésta. Cada una tiene sus ventajas y sus inconvenientes. En la medida de lo posible voy a intentar investigar un poco más de cada librerÃa e intentaré hacer un artÃculo más en profundidad y código de las distintas librerias que hemos visto anteriormente. En la actualidad yo he utilizado la HTML2PDF, puesto que es la más sencilla desde mi punto de vista para trabajar con HTML, para el poco tiempo que he tenido para estudiar el funcionamiento de las librerÃas, si en vez de 2 dÃas hubiese tienido 2 ó 3 semanas hubiera podido ver todas las posibilidades con más detenimiento, y a lo mejor hubirera podido seleccionar otra librerÃa, pero nunca se sabe, la verdad es que lo fácil que es trabajar con la HTML2PDF es asombroso, pero tiene muy pocas fuentes de texto, o al menos las que vienen por defecto, repito que he tenido muy poco tiempo para investigar más.
Enlaces:
[1] FPDF: http://www.fpdf.org
[2] Página de Scripts de FPDF: http://www.fpdf.org/es/script/index.php
[3] ASP FPDF: http://www.aspxnet.it/public/default.asp
[4] HTML2PDF: http://html2pdf.spipu.net/
[5] TCPDF: http://www.tcpdf.org/
[6] mPDF: http://mpdf.bpm1.com/