Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error al generar PDF con html2pdf

Estas en el tema de Error al generar PDF con html2pdf en el foro de PHP en Foros del Web. Hola amigos, llevo un montón de horas atascado en la generación de un PDF con html2pdf, usando el mismo código que tengo en otro apartado ...
  #1 (permalink)  
Antiguo 29/07/2015, 03:25
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 5
Pregunta Error al generar PDF con html2pdf

Hola amigos,

llevo un montón de horas atascado en la generación de un PDF con html2pdf,

usando el mismo código que tengo en otro apartado de la app que si funciona, y el error que me da es el siguiente, a ver si alguien sabe que es...

Código PHP:
Ver original
  1. [29-Jul-2015 09:11:42 UTC] PHP Fatal error:  Uncaught <span style="color: #AA0000; font-weight: bold;">ERROR n°4</span><br>Fichero : /home2/xxxx/public_html/xxxxx/xxxx/librerias/html2pdf/_class/parsingHtml.class.php<br>Línea : 119<br><br>Código HTML no válido, las etiquetas no estan cerradas en el orden correcto.<br>Estado : <pre>Array
  2. (
  3.     [0] => page
  4.     [1] => html
  5. )
  6. </pre><br><br>HTML : ...l&gt;&lt;head&gt;&lt;title&gt;&lt;/title&gt;&lt;/head&gt;&lt;/page&gt;...
  7.   thrown in /home2/xxxxx/public_html/xxxxxxx/xxxxxxx/librerias/html2pdf/_class/parsingHtml.class.php on line 119

La cuestión es que lo de <span ----- no es mío, esa etiqueta no se de donde sale, yo generaba un contrato en HTML y lo quería pasar a PDF, pero para salir de dudas por si era mi código he hecho el siguiente super simple...

Código PHP:
Ver original
  1. $contrato = '<html><head><title></title></head><page><body><h1>Titulo prueba</h1><br><p>Texto de prueba</p></page></body></html>';

Pero sigue cascando....

el fallo que da es en una clase de la propia librería... si a alguien le ha pasado o sabría orientarme lo agradecería.
  #2 (permalink)  
Antiguo 29/07/2015, 05:24
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Error al generar PDF con html2pdf

muestra todo el codigo a ver solo con eso no podemos saber cual es la linea 119 yo uso es dompdf con el cual nada de problemas, almenos hasta ahora, pero igual cuelga el codigo para orientarte mejor
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 29/07/2015, 08:35
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 5
Respuesta: Error al generar PDF con html2pdf

Perdona, no lo había puesto porque se supone que la librería funciona bien... pero si te refieres a mi código es que es muy simple:

Código PHP:
Ver original
  1. require_once('../librerias/html2pdf/html2pdf.class.php');
  2. $pdf = new HTML2PDF('P','A4','es');
  3. $pdf->writeHTML($contrato);
  4. $pdf->Output($nombreContrato.'.pdf', $directorioEscritura);
  #4 (permalink)  
Antiguo 29/07/2015, 08:56
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Error al generar PDF con html2pdf

mira este codigo para esa libreria, por ningun lado indica que debes incluir etiquetas html, tittle, head o lo que sea:

Código PHP:
Ver original
  1. <page backtop="10mm" backbottom="10mm" backleft="20mm" backright="20mm">
  2.     <page_header>
  3.         <table style="width: 100%; border: solid 1px black;">
  4.             <tr>
  5.                 <td style="text-align: left;    width: 33%">html2pdf</td>
  6.                 <td style="text-align: center;    width: 34%">Test d'header</td>
  7.                 <td style="text-align: right;    width: 33%"><?php echo date('d/m/Y'); ?></td>
  8.             </tr>
  9.         </table>
  10.     </page_header>
  11.     <page_footer>
  12.         <table style="width: 100%; border: solid 1px black;">
  13.             <tr>
  14.                 <td style="text-align: left;    width: 50%">html2pdf.fr</td>
  15.                 <td style="text-align: right;    width: 50%">page [[page_cu]]/[[page_nb]]</td>
  16.             </tr>
  17.         </table>
  18.     </page_footer>
  19.     <span style="font-size: 20px; font-weight: bold">Démonstration des retour à la ligne automatique, ainsi que des sauts de page automatique</span><br>
  20.     <br>
  21.     <br>
  22.     <table style="width: 80%;border: solid 1px #5544DD; border-collapse: collapse" align="center">
  23.         <thead>
  24.             <tr>
  25.                 <th style="width: 30%; text-align: left; border: solid 1px #337722; background: #CCFFCC">Header 1</th>
  26.                 <th style="width: 30%; text-align: left; border: solid 1px #337722; background: #CCFFCC">Header 2</th>
  27.             </tr>
  28.         </thead>
  29.         <tbody>
  30. <?php
  31.     for ($k=0; $k<13; $k++) {
  32. ?>
  33.             <tr>
  34.                 <td style="width: 30%; text-align: left; border: solid 1px #55DD44">
  35.                     test de texte assez long pour engendrer des retours à la ligne automatique...
  36.                     a b c d e f g h i j k l m n o p q r s t u v w x y z
  37.                     a b c d e f g h i j k l m n o p q r s t u v w x y z
  38.                 </td>
  39.                 <td style="width: 70%; text-align: left; border: solid 1px #55DD44">
  40.                     test de texte assez long pour engendrer des retours à la ligne automatique...
  41.                     a b c d e f g h i j k l m n o p q r s t u v w x y z
  42.                     a b c d e f g h i j k l m n o p q r s t u v w x y z
  43.  
  44.                 </td>
  45.             </tr>
  46. <?php
  47.     }
  48. ?>
  49.         </tbody>
  50.         <tfoot>
  51.             <tr>
  52.                 <th style="width: 30%; text-align: left; border: solid 1px #337722; background: #CCFFCC">Footer 1</th>
  53.                 <th style="width: 30%; text-align: left; border: solid 1px #337722; background: #CCFFCC">Footer 2</th>
  54.             </tr>
  55.         </tfoot>
  56.     </table>
  57.     <br>
  58.     Ca marche !!!<br>
  59.     refaisons un test : <br>
  60.     <table style="width: 80%;border: solid 1px #5544DD">
  61. <?php
  62.     for ($k=0; $k<12; $k++) {
  63. ?>
  64.         <tr>
  65.             <td style="width: 30%; text-align: left; border: solid 1px #55DD44">
  66.                 test de texte assez long pour engendrer des retours à la ligne automatique...
  67.                 a b c d e f g h i j k l m n o p q r s t u v w x y z
  68.                 a b c d e f g h i j k l m n o p q r s t u v w x y z
  69.             </td>
  70.             <td style="width: 70%; text-align: left; border: solid 1px #55DD44">
  71.                 test de texte assez long pour engendrer des retours à la ligne automatique...
  72.                 a b c d e f g h i j k l m n o p q r s t u v w x y z
  73.                 a b c d e f g h i j k l m n o p q r s t u v w x y z
  74.  
  75.             </td>
  76.         </tr>
  77. <?php
  78.     }
  79. ?>
  80.     </table>
  81.     <br>
  82.     Ca marche toujours !<br>
  83.     De plus, vous pouvez faire des sauts de page manuellement en utilisant les balises &lt;page&gt; &lt;/page&gt;, comme ici par exemple :
  84. </page>
  85. <page pageset="old">
  86.     Nouvelle page !!!!
  87. </page>

y esta genera el pdf de lo anterior, la probe y funciona perfecto
Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * HTML2PDF Librairy - example
  4.  *
  5.  * HTML => PDF convertor
  6.  * distributed under the LGPL License
  7.  *
  8.  * @author      Laurent MINGUET <[email protected]>
  9.  *
  10.  * isset($_GET['vuehtml']) is not mandatory
  11.  * it allow to display the result in the HTML format
  12.  */
  13.  
  14.     // get the HTML
  15.     ob_start();
  16.     include(dirname(__FILE__).'/res/exemple03.php');
  17.     $content = ob_get_clean();
  18.  
  19.     // convert to PDF
  20.     require_once(dirname(__FILE__).'/../html2pdf.class.php');
  21.     try
  22.     {
  23.         $html2pdf = new HTML2PDF('P', 'A4', 'fr', true, 'UTF-8', 3);
  24.         $html2pdf->pdf->SetDisplayMode('fullpage');
  25.         $html2pdf->writeHTML($content, isset($_GET['vuehtml']));
  26.         $html2pdf->Output('exemple03.pdf');
  27.     }
  28.     catch(HTML2PDF_exception $e) {
  29.         echo $e;
  30.         exit;
  31.     }
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 29/07/2015, 11:41
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 5
Respuesta: Error al generar PDF con html2pdf

Hola de nuevo,

sigue sin funcionar pero al menos ahora me devuelve algo, antes se me quedaba en blanco. Lo malo es que lo que me devuelve tampoco lo entiendo, y no llega a crear el PDF tampoco.

El error de ahora es:

Código HTML:
Ver original
  1. %PDF-1.7 3 0 obj <> /Resources 2 0 R /Contents 4 0 R>> endobj 4 0 obj <> stream x��R @��Wc]��Yρބ��C3"0��>1��$I:,;����`H-,bH3 9[MD�Ԛ��7x�� n{�š7{qhГ��Wq���DuBB��  V ]S�����|��㎗��16L1I{ 8MO���R(?���� Gf Nm�� #�� endstream endobj 1 0 obj <> endobj 5 0 obj << /Type /OCG /Name (&#65533;&#65533;print) /Usage << /Print <> /View <> >> >> endobj 6 0 obj << /Type /OCG /Name (&#65533;&#65533;view) /Usage << /Print <> /View <> >> >> endobj 7 0 obj <> endobj 8 0 obj <> endobj 2 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F1 7 0 R /F2 8 0 R >> /XObject << >> /Properties <> /ExtGState << >> >> endobj 9 0 obj << /Creator (&#65533;&#65533;HTML2PDF - TCPDF) /Producer (&#65533;&#65533;TCPDF 5.0.002 \(http://www.tcpdf.org\) \(TCPDF\)) /CreationDate (D:20150729174109+00'00') /ModDate (D:20150729174109+00'00') >> endobj 10 0 obj << /Type /Catalog /Pages 1 0 R /OpenAction [3 0 R /FitH null] /PageLayout /SinglePage /PageMode /UseNone /Names << >> /ViewerPreferences << /Direction /L2R >> /OCProperties <> <>]>>>> >> endobj xref 0 11 0000000000 65535 f 0000000422 00000 n 0000000935 00000 n 0000000009 00000 n 0000000175 00000 n 0000000482 00000 n 0000000601 00000 n 0000000718 00000 n 0000000824 00000 n 0000001104 00000 n 0000001353 00000 n trailer << /Size 11 /Root 10 0 R /Info 9 0 R >> startxref 1719 %%EOF

  #6 (permalink)  
Antiguo 29/07/2015, 11:45
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Error al generar PDF con html2pdf

mano has considerado utilizar domPDF, es muchisimo mas facil de usar, no da problemas, al menos no hasta ahora, trabaja con css, html, puedes cargar consultas de php sin tanto rollo, pruebalo y avisas que tal
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 29/07/2015, 11:47
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 5
Respuesta: Error al generar PDF con html2pdf

Me da hasta vergüenza decirlo.. pero si lo he probado y también me casca, lo que no he probado es sin meter las etiquetas html, body etc...

Volveré a probar a ver... si tampoco lo consigo te lo comento a ver si lo consigo antes de que me de un derrame jejejeje

Gracias voy a probar
  #8 (permalink)  
Antiguo 29/07/2015, 11:54
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Error al generar PDF con html2pdf

este es uno de los tantos codigos que uso con domPDF para generar uno de tantos informes:

Código PHP:
Ver original
  1. <?php
  2. require_once("../pdf2/dompdf_config.inc.php");
  3.  
  4. $html =
  5.   '<html>'.
  6.   '<HEAD>'.
  7.   '<link href="estilo_lista.css" rel="stylesheet" type="text/css">'.
  8.   '</HEAD>'.
  9.   '<body>'.
  10.   //logo empresa
  11.   '<div id="cabecera"><img id="logo" src="http://www.forosdelweb.com/f18/img/logos/'.$logo.'" width="100" height="100" alt=""/><br>'.
  12.  //---------------------------------------------------------------------------------------------------------
  13.  
  14.   //rif empresa
  15.   '<p><h6><b id="rif">RIF.: '.$row_empresa['rif'].'</b></h6></p><br></div>'.
  16.  //---------------------------------------------------------------------------------------------------------
  17.  
  18.   //Datos del operador
  19.   '<table width="180mm"><tr id="opera"><td width="140mm">Fecha</td><td width="40mm">Operador</td></tr>
  20.                         <tr id="opera2"><td>'.$fecha.'</td><td>'.$row_empresa['nombre_completo'].'</td></tr></table>'.
  21.  //---------------------------------------------------------------------------------------------------------
  22.  
  23.   //titulo
  24.   '<br><br><p><center><H4id="titulo">CONTRATISTAS PERMIZADAS HOY <b>'.$fecha.'</H4></b></center></p><br><br>'.
  25.  //-----------------------------------------------------------------------------------------------------------
  26.  
  27.   //tabla
  28.  '<div id="div_act">'.
  29.   '<table width="190mm" border="0" class="table-striped">
  30.                     <thead>
  31.                     <tr>
  32.                     <td id="td_numero"><center>Nº</center></td>
  33.                         <td id="td_empresa"><center>Contratista</center></td>
  34.                         <td id="td_estado"><center>Actividad</center></td>
  35.                         <td id="td_tipo"><center>Tipo</center></td>
  36.                         <td id="td_area"><center>Area</center></td>
  37.                        
  38.                     </tr>
  39.                     </thead>';
  40.         $cont = 0;
  41.         while($activ = $permiso->fetch_array())
  42.  
  43.         {
  44.             $cont++;
  45. $html.=         '<tbody>
  46.                 <tr>
  47.                         <td id="numero"><br><center>'.$cont.'</center><br></td>
  48.                         <td id="td_empresa">'.$activ['empresa'].'</td>
  49.                         <td id="td_estado">'.$activ['actividad'].'</td>
  50.                         <td id="td_tipo"><center>'.$activ['tipo_permiso'].'</center></td>
  51.                         <td id="td_area"><center>'.$activ['area'].'</center></td>
  52.                 </tr>
  53.                 </tbody>';
  54.                         } }
  55.  $html.='</table></div>'.
  56.  '<div id="footer">
  57.  <p>Página <span class="pagenum"></span></p>
  58. </div>'.
  59.   '</body></html>';
  60.  
  61. $dompdf = new DOMPDF();
  62. $dompdf->load_html(utf8_decode($html));
  63. $dompdf->render();
  64. $dompdf->stream($nombre);
  65.  
  66. ?>
como puedes ver incluyo html, consultas php, css y no da ni un problemita
__________________
[email protected]
HITCEL
  #9 (permalink)  
Antiguo 30/07/2015, 01:22
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 5
Respuesta: Error al generar PDF con html2pdf

No me va... de verdad... no se como algo tan simple me falla... es que no lo entiendo, primero me he bajado la libreria, me daba un error en la propia clase de que faltaba un archivo de fuentes, lo he arreglado y al arreglarlo me pasa igual que con html2pdf con los códigos con caracteres extraños.

el código que he usado es:

Código PHP:
Ver original
  1. require_once('../librerias/dompdf/dompdf_config.inc.php');
  2. $dompdf = new DOMPDF();
  3. $dompdf->load_html(utf8_decode($contratooo));
  4. $dompdf->render();
  5. $dompdf->stream('contrato.pdf');

yo ya no se que hacer... no hay ninguna forma de que devuelva el tipo de error?
  #10 (permalink)  
Antiguo 30/07/2015, 23:34
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 5
Respuesta: Error al generar PDF con html2pdf

Al final lo he solucionado, por si a alguien le pasa lo mismo que a mi... el problema era una etiqueta del código html que estaba usando, en concreto un párrafo mal cerrado...

No me había dado cuenta porque al imprimirlo los navegadores reparan estas cosas pero se ve que la librería detectaba la etiqueta y cascaba pero no me decía error ni nada.
  #11 (permalink)  
Antiguo 29/07/2016, 19:06
 
Fecha de Ingreso: febrero-2003
Mensajes: 76
Antigüedad: 21 años, 9 meses
Puntos: 0
Respuesta: Error al generar PDF con html2pdf

buenas si alguien me puede ayudar con este error en html2pdf Fatal error: Cannot redeclare class HTML2PDF in C:\xampp\htdocs\PHP\Tutorial-PDF-BD-PHP-MySql-HTML2PDF\html2pdf\html2pdf.class.php on line 15
__________________
Netfiles

Etiquetas: html2pdf, pdf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:11.