Dompdf es una librería de PHP que permite tomar una página HTML y renderizarla (convertirla) a un PDF; aunque realmente no se crea un archivo PDF pero para el usuario de la página web se verá un auténtico archivo de éste tipo y podrá imprimirlo, guardarlo y tratarlo en su totalidad como uno.
Su uso es muy sencillo, pondré un sencillo ejemplo de su uso básico:
Tenemos una página HTML con éste código:
<html>
<head>
<title>Archivo pdf</title>
</head>
<body>
<center>
<h1>Página renderizada a PDF</h1>
</center>
</body>
</html>
La página se llama "pagina1.html". (Se ve así: http://unrinconenlaweb.webcindario.com/programas/pdf/pagina1.html)
Ahora, para renderizarla a un PDF es necesario crear una página php con el siguiente código:
<?php
require_once("dompdf/dompdf_config.inc.php"); //Aquí se incluye la librería php del Dompdf
$file = file_get_contents("pagina1.html"); //Se "extrae" la página que se convertirá a PDF
$dompdf = new DOMPDF(); //Se crea un objeto del tipo DOMPDF
$dompdf->load_html($file); //Se le "carga" la página que convertiremos
$dompdf->render(); //Se manda a llamar el método para renderizar
header('Content-type: application/pdf'); //Ésta es simplemente la cabecera para que el navegador interprete todo como un PDF
echo $dompdf->output(); //Y con ésto se manda a imprimir el contenido del pdf
?>
El resultado será éste: http://unrinconenlaweb.webcindario.com/programas/pdf/ejemplo1.php
Como se nota, hay que abrir la página .php en lugar de la .html
Ahora, en más de la mitad de las ocasiones se requerirá que la información a mostrar en el PDF varíe, como puede ser una fecha, el nombre del usuario o cualquier otro dato.
Para eso, hay que poner en la página .html palabras "claves" que después serán reemplazadas por los valores dinámicos a la hora de renderizar.
Es éste ejemplo voy a poner 3 valores numéricos aleatorios en el PDF.
Para empezar, aquí está la página html (Se llama "pagina2.html")
<html>
<head>
<title>Archivo pdf</title>
</head>
<body>
<center>
<h1>Página renderizada a PDF</h1>
</center>
<br />
<br />
<li><b>Dato 1:</b> {#dato1}</li>
<li><b>Dato 2:</b> {#dato2}</li>
<li><b>Dato 3:</b> {#dato3}</li>
</body>
</html>
Se ve así: http://unrinconenlaweb.webcindario.com/programas/pdf/pagina2.html
Como se puede notar, están escritas "{#dato1}" "{#dato2}" y "{#dato3}" que en éste caso servirán de "palabras clave" que reemplazaré por número generados aleatoriamente.
La página php contiene lo siguiente:
<?php
require_once("dompdf/dompdf_config.inc.php"); //Se incluye la librería Dompdf
$file = file_get_contents("pagina2.html"); //Se "extrae" la página a renderizar
$dato1=rand(1,100); //guardo en una variable un número random entre 1 y 100
$dato2=rand(101,200); //guardo en otra variable un número aleatorio entre 101 y 200
$dato3=rand(300,10000); // y guardo en una tercera variable un número aleatorio entre 300 y 10000
$dompdf = new DOMPDF(); //creo un objeto de la clase DOMPDF
/*En la siguiente función reemplazo las "palabras clave" por los valores aleatorios de las variables que creé arriba*/
$html = str_replace( //a la variable $html guardo lo que me arroja la función str_replace
array(
"{#dato1}","{#dato2}","{#dato3}" //éstas son las palabras claves a reemplazar
),
array(
$dato1,$dato2,$dato3 //éstos son los datos que sustituirán las palabras claves
),
$file //y se reemplazará de la página cargada en ésta variable, lo que hice más arriba
);
$dompdf->load_html($html); //Se carga la página que convertiremos ya con los reemplazos
$dompdf->render(); //mandamos a llamar el método para renderizar
header('Content-type: application/pdf'); //ponemos la cabecera para PDF
echo $dompdf->output(); //se imprime el documento PDF
?>
El resultado será así: http://unrinconenlaweb.webcindario.com/programas/pdf/ejemplo2.php
Cada vez que se recarga la página, se muestran 3 valores diferentes en los campos.
Para descargar los ejemplos y la librería, aquí está el enlace:
https://dl.dropbox.com/u/46960544/pdf.rar
¿Y cómo cambias el margen y el tamaño de la letra?
ResponderEliminarEl formato del archivo es el HTML; si quieres trabajar con el estilo hazlo con CSS. Pones la sección style y allí pones los estilos. Considera que estás creando una página HTML que después convertirás a PDF.
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarY esto error : dompdf/include/functions.inc.php on line 790
ResponderEliminarEs de la librería DOMPdf; comúnmente es por que lo que quieres renderizar no está correcto (No es texto, hay algún error de php o MySQL, no tiene la sintaxis de HTML correcta)... lo que recomiendo es que revises el resultado de lo que intentas renderizar (haz un echo a la variable que renderizas para que veas qué errores tienes).
EliminarNo me genera el archibo en pdf me dice error al abrir el archivo.pdf
ResponderEliminarEso podría ocurrir por que tu script PHP manda un error (sintaxis, semántica, operación imposible...); para checar si es así, comenta las últimas 2 líneas:
Eliminarheader('Content-type: application/pdf'); //ponemos la cabecera para PDF
echo $dompdf->output(); //se imprime el documento PDF
HAZ INTENTADO ABRIR LA VENTANA DE IMPRESION INMEDIATAMENTE QUE SE ABRA EL PDF??
ResponderEliminarPues, podrías intentar abrir la ventana en un pop-up y luego imprimir el pop-up con JavaScript.
EliminarAlgo como:
var ventana=window.open("destino.php");
ventana.print();
Aunque no estoy 100% seguro que funcione a la primera.
Ya lo intente, pero no me funciono...
Eliminar