José Amaya | Experto en automatización
Hey, quiero que todos mis clientes reciban una copia de su factura inemdiatamente se ejecuta en mi sistema ERP.
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.
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.
composer require dompdf/dompdf
Debes agregar el paquete recien instalado en el vendor autoload
require 'vendor/autoload.php';
use Dompdf\Dompdf;
use Dompdf\Options;
$dompdf = new Dompdf();
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);
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..
La carga de la plantilla a usar es importante.
$dompdf->loadHtml($content);
Como todo documento pdf este debe tener las medidas y los diseños correspondientes.
$dompdf->setPaper('A4','portrait');
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();
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);