Crear PDF en PHP

Subodh Poudel 8 octubre 2023
  1. Utilice la biblioteca mpdf para crear PDF en PHP
  2. Utilice la biblioteca dompdf para crear PDF en PHP
Crear PDF en PHP

Este artículo presentará métodos para crear PDF en PHP. Recuperaremos los datos de la base de datos, los colocaremos en el PDF y los descargaremos.

Utilice la biblioteca mpdf para crear PDF en PHP

Podemos utilizar la biblioteca externa mpdf para crear un PDF en PHP. Podemos recuperar los datos de la base de datos, almacenarlos en PDF y descargar el PDF. Usando esta biblioteca, podemos crear PDF a partir de documentos HTML. Los documentos HTML deben estar codificados en UTF-8. Podemos recuperar los datos que se agregarán al PDF de la base de datos en formato HTML. Podemos descargarlo con el comando composer require mpdf/mpd desde el directorio del proyecto para usar la biblioteca. El comando instalará la biblioteca mpdf en el directorio del proyecto. Se creará un archivo vendor y necesitamos usar la función require() para incluir el archivo autoload.php ubicado dentro de la carpeta vendor. Tenemos que asegurarnos de que el directorio donde está instalada la biblioteca tenga permiso de escritura.

Crearemos un objeto desde el constructor Mpdf() y usaremos métodos como WriteHTML() y output() para crear el PDF. Hay diferentes modos en los que podemos generar el PDF. Podemos especificar los modos en el segundo parámetro del método output(). Los diferentes modos están representados por las opciones D, I, F y S. La opción D descargará forzosamente el PDF después de que se ejecute el script. La opción I mostrará el PDF en el navegador después de que se ejecute el script. Mientras tanto, la opción F descargará los archivos PDF guardados en la carpeta relativa al archivo PHP. Por último, la opción F generará el pdf en el navegador solo cuando el método output() esté asignado a una variable.

Por ejemplo, tenemos una base de datos llamada phprow que contiene una tabla llamada Persons. La tabla Persons contiene los siguientes datos.

+----------+----------+-----------+
| PersonID | Name     | Address   |
+----------+----------+-----------+
| 22       | Harry M  | England   |
| 32       | Paul P   | France    | 
+----------+----------+-----------+

Primero, use la función require() para incluir el archivo vender/autoload.php. Luego, cree y establezca una conexión a la base de datos, ejecute la consulta SQL para seleccionar los datos de la base de datos y cree una tabla en la variable $html. Utilizar el . operador para concatenar la variable $html con los cuerpos de la tabla. Cree una tabla con los encabezados de la tabla ID, Name y Address. Luego, complete la tabla recuperando los datos mostrados anteriormente de la tabla Persons.

Código de ejemplo:

require('vendor/autoload.php');
$con=mysqli_connect('localhost','root','','phprow');
$res=mysqli_query($con,"select * from Persons");
if(mysqli_num_rows($res)>0){
    $html='<table>';
    $html.='<tr><td>ID</td><td>Name</td><td>Address</td>';
    while($row=mysqli_fetch_assoc($res)){
        $html.='<tr><td>'.$row['PersonID'].'</td><td>'.$row['Name'].'</td><td>'.$row['Address'].'</td></tr>';
    }
    $html.='</table>';
}

En el ejemplo anterior, hemos almacenado una tabla con los datos de la base de datos en la variable $html. Hemos utilizado el . operador para concatenar todos los elementos de la tabla. Por lo tanto, creamos un documento HTML listo para escribir en un PDF.

A continuación, cree una variable denominada $mpdf. Asigne el objeto del constructor $mpdf a la variable usando la palabra clave new. Llame a la función WriteHTML() con la variable $html como parámetro con el objeto. Luego cree otra variable, $file, para almacenar el PDF. Une files/ con la función time() y vuelve a concatenarlo con .pdf para crear el nombre del archivo. Guárdelo en la variable $file. Por último, llame a la función output() con $file como primer parámetro y la opción I como segundo parámetro.

Por lo tanto, recuperamos datos de la base de datos y creamos un PDF con esos datos. El siguiente ejemplo crea un archivo con el nombre de la hora actual con una extensión .pdf dentro de la carpeta files. El PDF se mostrará en el navegador después de que se ejecute el script. Podemos descargar el PDF desde el navegador.

Código de ejemplo:

$mpdf=new \Mpdf\Mpdf();
$mpdf->WriteHTML($html);
$file='files/'.time().'.pdf';
$mpdf->output($file,'I');

Utilice la biblioteca dompdf para crear PDF en PHP

La biblioteca dompdf también es una opción para crear y descargar un PDF en PHP. Nos permite cargar el HTML al PDF. Esta biblioteca es muy similar a la biblioteca mpdf; solo los métodos son diferentes. Usaremos métodos como loadHtml(), render() y stream(). Necesitamos descargar la biblioteca a nuestro directorio de trabajo usando el comando composer require dompdf/dompdf. Creará la carpeta vendor como en el primer método junto con los archivos composer.json y composer.lock.

Por ejemplo, requiera vendor/autoload.php como la primera línea del código en el programa. Luego escriba la palabra clave use para importar la clase Dompdf como use Dompdf/Dompdf. Podemos usar la misma tabla HTML que en el método anterior para cargar el PDF.

require 'vendor/autoload.php';
use Dompdf\Dompdf;

Después de almacenar el HTML en una variable $html, cree otra variable $dompdf para crear un objeto de la clase Dompdf. Luego llame al método loadHtml() con $html como parámetro. A continuación, llame a la función render() y luego a la función stream() con el objeto $dompdf.

El siguiente ejemplo creará un PDF con la tabla como en el primer método. El método render() renderiza el HTML como un archivo PDF, y el método stream() envía el HTML renderizado al navegador. Por lo tanto, podemos crear un PDF utilizando la biblioteca dompdf en PHP.

Código de ejemplo:

$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->stream();
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Artículo relacionado - PHP PDF