
En otros artículos he explicado cómo podemos generar una factura (ejemplo de documento dinámico elegido para el ejemplo) en formato Word y/o formato Excel.
También, después expuse y mostré como podemos hacer un webservices para convertir cualquier documento MS Office a PDF (estoy muy orgulloso de esta solución).
El webservices es depediente del S.O. Windows y el proceso tiene un tiempo de respuesta que en absoluto es inmediato.
Así pues, muchas personas y yo mismo, teníamos como pendiente buscar una solución que nos permitiera crear documentos de calidad, directamente en PDF, de forma rápida y sencilla.
Para que fuera rápido y sencillo, he decidido que deberíamos partir de una plantilla de PDF, lo que nos simplificaría mucho disponer de documentos con muy buena calidad y que no se tuviera que partir de una “hoja en blanco”, porque eso significaría que el programador de PHP estaría diseñando los documentos PDF de forma lenta y muy artesanal.
En Internet hay muchas librerías para desde PHP, crear y modificar ficheros PDF’s, pero en este caso he seleccionado la solución de Setasin https://www.setasign.com/products/fpdi/about/ porque hay una empresa activa en la actualidad y se ajustaba perfectamente a la fucnionalidad que deseaba incorporar al ejemplo.
Para hacer la plantilla de PDF he utilizado Excel (se puede hacer con casi cualquier software pero Excel es de las mejores solcuiones).
He partido de la plantilla que tenía para la solución de crear excel, pero he tenido que definir múltiples líneas de factura, ya que esta solución no permite hacer dinámicos objetos de la plantilla (esto es una de las limitaciones de usar plantillas PDF’s, pero es lo que más se asemeja a la solución clásica de formularios en papel.
En el uso de la librería, debemos de especificar las coordenadas X e Y (en puntos) en donde queremos introducir los textos.
Casi todos los visores/reader de ficheros PDF’s tienen lla opción de medir. Yo he utilizado la solución Foxit Reader https://www.foxitsoftware.com/pdf-reader/, pero cada uno deberá utilizar aquello con lo que se encuentre más agusto.
El producto utilizado me indica que cada página tiene el tamaño de 595.32 X 841.92 (puntos).
Cuando utilizamos la herramienta de medida nos indica la distancia en eje X o eje Y desde un punto a otro. Esto es muy importante ya que para posicionar los datos en la plantilla vamos a tener que indicar las coordnadas X e Y desde el punto 0, 0.
Esta es una imagen de un ejemplo de salida.
Cosas que tenemos que tener en cuenta:
- Los valores los escribe como si fuese texto, es decir, alineado a la izquiera.
- Si tenemos columnas y valores numéricos, he utilizado la fuente Courier que todos los caracteres tienen el mismo tamaño y así me facilita la alineación de las columnas de valores numéricos.
Todas estas librerías de PHP son bastantes pesadas y para que los proyectos de PHPRunner no sean pesados y además me permita compartir estas librerías para varios proyectos, siempre creo un directorio “ComponentCode”, a la misma altura de despliegue que los proyectos, en donde dejo las librerías. En este ejemplo están la librerías de:
- Fpdi
- PHPWord
- PhpSpreadsheet
Tenedlo en cuenta si os descargáis el ejemplo, porque tendréis que descargar estas librerías.
Podéis ver el resultado en este enlace de DEMO https://fhumanes.com/factura/
Como es habitual en estos artículos, os dejo los ficheros para que lo podáis probar en vuestros equipos.
Para lo cualquier duda o lo que necesitéis, me lo indicáis a través de mi email [email protected].