PHP no ha muerto.

¿Cómo crear un pdf con PHP?

José Amaya | Experto en automatización

El requerimiento:

Hey, quiero que todos mis clientes reciban una copia de su factura inemdiatamente se ejecuta en mi sistema ERP.

La solución:

Lo más importante a la hora de ejecutar la integración es que logremos evaluar si el sistema actual no tiene la capacidad de enviar estas facturas simplemente usando un servicio SMTP y si la tiene nos ahorramos trabajo pero si no la tiene aquí es que entra en juego nuestra solución.

Ahora, viene lo bueno:

Ya llegados a este punto el cliente quiere que la solución sea una api donde todos los sistemas de las diferentes empresas pueda enviar un arreglo de objetos con sku y cantidad y automaticamente se guarde una orden se envíe una factura o una cotización, algo muy basico de cualquier sismtema de ventas pero lamentablemente no es fácil de integrar con multiples origenes de datos para poder tener todo centralizado.

Dependencias

  • Herramientas
  • PHP
  • Composer
  • HTTP metodos

1. Instalar dompdf

composer require dompdf/dompdf

2. vendor autoload.php

Debes agregar el paquete recien instalado en el vendor autoload

require 'vendor/autoload.php';

3. Llamar a Dompdf

use Dompdf\Dompdf; use Dompdf\Options;

4. Instanciar Dompdf

$dompdf = new Dompdf();

5. Origenes remotos

Lor origenes remotos te permiten hacer llamados a recursos que estan fuera de servidor y usarlos en tu documento.

$options = new Options(); $options->set('isRemoteEnabled', true); $dompdf = new Dompdf($options);

6. Almacenar HTML

Debes almacenar el html en una variable de tipo texto para posteriormente utilizarla sin inconveniente, puedes ver el ejemplo en mi repositorio de github: repositorio.

Sí quires pasar valores dinamicos solo debes usar una concatenación de string usado el formato normal de concatenación de código '.$contenidoDinamico.'.

Si necesitas automatizar el proceso de creación de tablas o crear ciclos repetivos concatena las cadenas de textos antes de inyectar la variable al método de loadHtml (htmlinfo.= 'bucleGetInfo') o utiliza un array para simplificar el recorrido de las variables o integrate con un motor de renderizado HTML como swig o blade de Laravel..

7. Cargar plantillas

La carga de la plantilla a usar es importante.

$dompdf->loadHtml($content);

8. Medidas

Como todo documento pdf este debe tener las medidas y los diseños correspondientes.

$dompdf->setPaper('A4','portrait');

9. Renderizado

Por renderizado entendemos que PDF por detrás en es la definción de Portable Document Format que es también un formato de imagen en el que podemos almacenar graficos y por esto podemos nombrarlo como renderizado del documento.

$dompdf->render();

10. Crear punto de descarga

DOMPDF te permite generar un archivo almacenado en un directorio o crear un punto de descarga que responda con el pdf para que el usuario lo pueda descargar y acceder al mismo, en el caso de querer enviar adjunto es necesario almacenarlo.

$dompdf->stream($fileName);

Resultado final