PHP Convertir HTML a PDF
INTRODUCCIÓN
Existen muchas herramientas en php para crear un pdf pero se preguntaran ¿Que ventaja tiene esta herramienta por encima de todas las demás?. Pues es lo fácil y versátil que es crear un documento pdf. Prácticamente dompdf convierte un html en pdf a través de php, lo que nos da muchas ventajas las cuales describo a continuación:
Ventajas:
- Versátil (Puede convertir html a pdf o puedes crear un pdf con texto y coordenadas).
- Puedes crear un pdf a través de un html que no este en tu sistema (Solo requieres pasarle la url).
- Es muy ligero.
- compatible con CSS.
- Opensource.
Desventajas:
- No es compatible con todas las funciones de CSS.
- Es conveniente crear nuestro HTML a convertir para evitar incompatibilidades.
- Tiene un limite en el tamaño del HTML a convertir.
PROCEDIMIENTOS
Descargamos y descomprimimos dompdf desde esta url: https://github.com/dompdf/dompdf/releases
Creamos un archivo index.php con este codigo:
<?php
// Jalamos las librerias de dompdf
require_once 'dompdf/autoload.inc.php';
use DompdfDompdf;
// Inicializamos dompdf
$dompdf = new Dompdf();
// Le pasamos el html a dompdf
$dompdf->loadHtml('hello world');
// Colocamos als propiedades de la hoja
$dompdf->setPaper("A4", "landscape");
// Escribimos el html en el PDF
$dompdf->render();
// Ponemos el PDF en el browser
$dompdf->stream();
?>
Si queremos crear un pdf desde un archivo externo podemos usar este codigo:
<?php
// Guardamos el contenido de contenido.php en la variable html
ob_start();
require "contenido.php";
$html = ob_get_clean();
// Jalamos las librerias de dompdf
require_once 'dompdf/autoload.inc.php';
use DompdfDompdf;
// Inicializamos dompdf
$dompdf = new Dompdf();
// Le pasamos el html a dompdf
$dompdf->loadHtml($html);
// Colocamos als propiedades de la hoja
$dompdf->setPaper("A4", "landscape");
// Escribimos el html en el PDF
$dompdf->render();
// Ponemos el PDF en el browser
$dompdf->stream();
?>
contenido.php
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<style>body{font-size: 16px;color: black;}</style>
<title>Title</title>
</head>
<body>
<h2>Hello</h2>
<img src="logo.png"></img>
</body>
</html>