Cómo crear un archivo PDF usando mPDF y PHP
Cómo crear un archivo PDF usando mPDF. PDF es un tipo de archivo muy usado para compartir y leer datos en Internet. en artículos anteriores hemos dado un tutorial sobre cómo convertir datos HTML a pdf.
Ahora crearemos un script PHP de datos estáticos que usa la biblioteca mPDF para generar archivos PDF. El paquete mpdf es una genial utilidad de PHP que le permite convertir código HTML en un formato PDF.
Ver Demostración con texto básico Ver Demostración con imágenesAtributos y soporte de MPDF
La biblioteca mPDF ayuda en la creación de archivos PDF a partir de HTML codificado en UTF-8, posee múltiples opciones como ser:
- Fuentes e idiomas
- Soporte HTML y Base de datos
- Paginación de hojas
- Encabezados y pies de página
- CSS y hojas de estilo
- Configuración de las propiedades del archivo PDF
- Soporta imágenes y mucho más.
Cómo crear un archivo PDF usando mPDF y PHP
En el presente articulo veremos algunas ventajas del paquete mPDF para crear archivos PDF desde el lenguaje PHP
Las siguientes dependencias son requeridas para el correcto funcionamiento:
- PHP 5.6 || 7.0.0 || 7.1.0 || 7.2.0 es requerido por mPDF 7.0.
- Las extensiones PHP mbstring y gd deben estar habilitadas.
- Requiere el módulo PHP zlib para la compresión de salida y recursos integrados como fuentes, así como bcmath para la generación de códigos de barras y xml para la conversión de juegos de caracteres y el manejo de SVG.
Crear archivo PDF con marca de agua usando PHP
Agregaremos texto de marca de agua dentro de un archivo pdf. El método que proporciona mPDF para agregar texto e imágenes de marca de agua. Hay un proceso de dos pasos para crear un pdf usando PHP.
Pasos para agregar marca de agua en mPDF
- Primer paso. Descargue la biblioteca de GitHub
- Segundo paso. Cree un documento HTML y guárdelo como una variable php.
- Paso 3. Incluiremos la clase de biblioteca mPDF
A continuación, detallaremos los 3 pasos que debemos de realizar para lograr el objetivo de colocar una marca de agua en un documento PDF generado con PHP.
Primer paso. Descargue la biblioteca de GitHub
Una vez descargado el paquete tiene que extraer los ficheros y almacenarlo en (xampp/htdocs/projectname/mpdf) o use el comando:
composer require mpdf/mpdf
Segundo paso. Cree un documento HTML y guárdelo como una variable php.
Puede hacerlo dinámico con PHP y base de datos, pero en este ejemplo usaremos un documento HTML estático. El siguiente contenido se agregará al archivo index.php.
$html = '<table width="80%" cellspacing="0" border="1">
<thead>
<tr>
<th>Empid</th>
<th>Nombres</th>
<th>Salario</th>
<th>Edad</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Tiger Nixon</td>
<td>320800</td>
<td>61</td>
</tr>
<tr>
<td>2</td>
<td>Garrett Winters</td>
<td>434343</td>
<td>63</td>
</tr>
<tr>
<td>3</td>
<td>Ashton Cox</td>
<td>86000</td>
<td>66</td>
</tr>
<tr>
<td>4</td>
<td>Cedric Kelly</td>
<td>433060</td>
<td>22</td>
</tr>
<tr>
<td>5</td>
<td>Airi Satou</td>
<td>162700</td>
<td>33</td>
</tr>
<tr>
<td>6</td>
<td>Brielle Williamson</td>
<td>372000</td>
<td>61</td>
</tr>
<tr>
<td>7</td>
<td>Herrod Chandler</td>
<td>137500</td>
<td>59</td>
</tr>
<tr>
<td>8</td>
<td>Rhona Davidson</td>
<td>327900</td>
<td>55</td>
</tr>
<tr>
<td>9</td>
<td>Colleen Hurst</td>
<td>205500</td>
<td>39</td>
</tr>
<tr>
<td>10</td>
<td>Sonya Frost</td>
<td>103600</td>
<td>23</td>
</tr>
</tbody>
</table>';
Paso 3. Incluiremos la clase de biblioteca mPDF
Para que PHP pueda crear el documento PDF debemos de incluir al final del archivo index.php las siguientes líneas de código que llama a la clase MPDF.
$mpdf = new \Mpdf\Mpdf([
'setAutoTopMargin' => 'stretch',
'autoMarginPadding' => 7]);
//llame al contenido y la imagen de la marca de agua
$mpdf->SetWatermarkText('MiEmpresa.com');
$mpdf->showWatermarkText = true;
$mpdf->watermarkTextAlpha = 0.1;
//guarde el archivo y coloque la ubicación que necesita carpeta/nombre de archivo
$mpdf->Output("miempresa.pdf", 'F');
//salida en el navegador debajo de la función de salida
$mpdf->Output();
¿Como configurar Header y Footer usando mPDF?
Para configurar el header debemos de incorporar $mpdf->SetHTMLHeader()
y para el footer $mpdf->SetHTMLFooter()
dentro del fichero donde deseamos crear el documento PDF.
Pasos para agregar encabezados y pie de páginas en mPDF
- Descargue la biblioteca de GitHub
- Cree un documento PHP y declare el autoload.php.
- Incluir SetHTMLHeader() y SetHTMLFooter()
Veamos un ejemplo completo
<?php
$mpdf = new \Mpdf\Mpdf();
// Define the Header/Footer before writing anything so they appear on the first page
$mpdf->SetHTMLHeader('
<div style="text-align: right; font-weight: bold;">
Mi Empresa
</div>');
$mpdf->SetHTMLFooter('
<table width="100%">
<tr>
<td width="33%">{DATE j-m-Y}</td>
<td width="33%" align="center">{PAGENO}/{nbpg}</td>
<td width="33%" style="text-align: right;">Mi Empresa</td>
</tr>
</table>');
$mpdf->WriteHTML('Hello World');
$mpdf->Output();
Salida en el navegador
¿Como corregir el error Fatal error: Uncaught Error: Class «mPDF» en mPDF?
Al ejecutar MPDF se suele presentar el siguiente error:
Fatal error: Uncaught Error: Class "mPDF" not found in
F:\XAMP8\htdocs\BAUL\pdf-usando-mpdf\Basico_mPDF\generate_pdf.php:76 Stack trace: #0
F:\XAMP8\htdocs\BAUL\pdf-usando-mpdf\Basico_mPDF\generate_pdf.php(98): generate_pdf() #1 {main} thrown in
F:\XAMP8\htdocs\BAUL\pdf-usando-mpdf\Basico_mPDF\generate_pdf.php on line 76
Para corregir este error debemos de configurar el llamado a la clase MPDF
Si al ejecutar el paquete mPDF nuestra un error de tipo FATAL ERROR solo debemos de buscar esta línea de código y reemplazar.
$mpdf = new mPDF();
La solución es cambiar de new mPDF();
a new \Mpdf\Mpdf();
. Veamos un ejemplo
$mpdf = new \Mpdf\Mpdf();
Conclusión
Usando PHP y contenido HTML estático, hemos logrado generar un documento PDF básico. Puede cambiar el método de creación de pdf para cumplir con sus requisitos.
Además, se puede incorporar consultas SQL desde base de datos para poblar nuestro PDF generado.
También, puede personalizar los encabezados y pie de páginas agregando imágenes de su empresa y marcas de agua. Así mismo, puede configurar márgenes, estilos, tablas, fuentes de texto, entre otras opciones.
Puede descargar el código fuente y/o ver la demostración desde el siguiente enlace.
Ver Demostración con texto básico Ver Demostración con imágenes