PHP - Función para converitr HTML en PDF

 
Vista:

Función para converitr HTML en PDF

Publicado por Jorge (11 intervenciones) el 11/10/2008 15:33:23
Que tal Gente, como andan?? Bueno tengo esta pequeña duda y quería saber si alguien me podía guiar.

Estoy haciendo un sistemita Web y necesito imprimir y guardar reportes que se generen de forma automatizada, para esto estoy utilizando un archivo HTML como plantilla para vaciar por medio de una consulta a mi BD la información especifica que el cliente quiera generar, mi problema es que aun no consigo una función que cumpla al 100% lo que necesito.

Probé con el FPDF pero este sólo genera PDF en base a PHP, es decir no puedo cargar tablas ni nada paracido en html porque no lo interpreta, conseguí otro que se veía bastante prometedor el DomPdf, pero los ejemplos del site oficial no son muy claros y tengo problemas en la conversión pues me devuelve diferentes errores. Para dar una idea mas clara de cual es el proceso que necesito hacer les dejo este pequeño resumen:

Consulta a la BD con PHP ---> Vacie los registros devueltos por la consulta en mi plantilla que está en HTML ---> Convierta la plantilla HTML en un PDF con los registros que se trajeron previamente ---> Guarde en mi hosting el archivo PDF

Básicamente creo que mi único problema existe en la conversión del HTML al PDF de la manera que quiero, si alguien conoce alguna rutina, tiene algun ejemplo claro de este caso tan puntual en DomPdf o en otra función parecida le agradecería la posteara para que me sea de guia.

De antemano muchas gracias.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Función para converitr HTML en PDF

Publicado por Anthony Reto (4 intervenciones) el 15/10/2008 19:38:08
Yo te recomiendo que uses FPDF es lo mejor para realizar lo que requieres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Función para converitr HTML en PDF

Publicado por Jorge (11 intervenciones) el 16/10/2008 00:34:26
En realidad ya resolví, igual comento mi experiencia para que sirva a quienes vean el tema:

El FPDF en efecto convierte el archivo en PDF, pero no admite HTML (es decir sólo convirete lo que se devuelve en PHP de las consultas a la BD), por ende las plantillas ya armadas que tenía en html no funcionaban pues eran incompatible con las funciones del código del FPDF, y tan si quiera pensar en armar una tabla o traerme una imágen era un dolor de cabeza considerable, la verdad pude resolver sin problemas con el DomPDF.

El DomPDF si admite HTML pero su comportamiento cuando se trata de insertar imágenes o respetar los tables es muy inestable, pero igual pude resolver; voy a poner un pequeño esquema a modo de resumen de como armé el PDF:

1. Descargar el dompdf (http://www.digitaljunkies.ca/dompdf/index.php)
2. Copiar las carpetas y obviamente las funciones en la carpeta de trabajo de la aplicación
3. Ver el funcionamiento del dompdf con este ejemplo (http://es.answers.yahoo.com/question/index?qid=20080613074714AA5Jwk8)

// ejemploDOMPDF.php
<?php
ini_set ("memory_limit","20M");
require_once ("dompdf/dompdf_config.inc.php");
Shtml=
"
<table border=0 cellspacing=0 cellpadding=6 bgcolor=#56789A>
<tr>
<td align=center>
<font color=#FFFFFF size=5>
Invitación
</font>
</td>
</tr>
<tr>
<td>
<font color=#FFFFFF size=3>
Estimado Usuario,

Le invitamos al <strong>I SEMINARIO DE PHP Y MYSQL</strong>.

Este evento se realizará el día 30 del presente a horas 12:00 am. en el Instituto de las Ciencias PHPianas.

Esperamos tu gentil asistencia a esta cita.

Atentamente,
<em>Mundo PHP y MYSQL</em>
</font>
</td>
</tr>
</table>
";
$dompdf = new DOMPDF();
$dompdf->load_html ($html);
$dompdf->render ();
$dompdf->stream ("formulario.pdf", array("Attachment" => 0));
$pdf = $dompdf->output ();
$nombre_archivo="prueba.pdf";
file_put_contents($nombre_archivo, $pdf);
?>

Como pueden ver es bastante sencillo, se inician las variables de la rutina, luego se carga una variable con un string gigante (que es todo el código HTML) y posteriormente esta escupe el PDF, la verdad mis princiaples problemas fueron trayendo la información de la BD y las imágenes, pues esta las ajustaba gracias al os tables del HTML los cuales el DomPDF se pasa por el forro y no respeta, por ende las imágenes aparecian con su tamaño original, para solventar eso hice lo siguiente:

1. En el caso de las variables forzosamente tuve que guardarlas en unas variables $_Session (no me pregunten porque pero fue la única manera de que no me diera error el PDF) y luego invocarlas desde el código html <? echo $_Session["Nombre"] ?>, sin poner comillas ni nada, al código solo se enciera entre " " al principio de este y al final.

2. Para las imágenes tuve que usar una rutina que me hace unos thumbs temporales en el servidor ajustados a los tamaños que necesitaba, luego estos los invoca el PDF por medio de las variables $_Session previamente declaradas y por último utilicé una rutina que elimina los thumb del hosting.

Espero que mi experiencia sirva para la ayuda de otros, pues por lo que veo el manejo de PDFs en esta plataforma es un tema delicado

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Función para converitr HTML en PDF

Publicado por Antonio Calabuig (1 intervención) el 15/06/2011 13:31:37
Hola Jorge,
como es la rutina que utilizas para eliminar los thumbs generados?
te los genera en la carpeta /tmp de la aplicación, verdad?

Ahora los estoy eliminando mediantes este comando de shell:

cd Sites/comparadores/tmp && rm -f dompdf_*

pero quiero automatizarlo.
Me puedes decir como lo has hecho?
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de francisco
Val: 93
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

RE:Función para converitr HTML en PDF

Publicado por francisco (45 intervenciones) el 27/02/2018 19:55:42
hola podrias poner un ejemplo mejor de como fue que usaste la variable
ya que pongo asi como lo mencionas pero solo recibo el echo como texto sin ningun resultado del llamado de la variable
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar