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 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