• Publicidad

Generar PDF

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Generar PDF

Notapor tolyn » 2013-10-22 14:54 @663

Colegas... estoy tratando de generar un pdf a partir de un código HTML. La cuestión es que me genera el pdf pero de 0 bytes... será que me falta alguna librería... Tengo el Virtualbox con Mandriva sin conexión a Internet.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. use HTML::HTMLDoc;
  4. use File::Path;
  5. my $htmldoc = new HTML::HTMLDoc();
  6.  
  7. $htmldoc->set_html_content(qq|<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  8. <html xmlns="http://www.w3.org/1999/xhtml">
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  11.  
  12. <body background="o_co_img_01.jpg">
  13. <table width="727" border=0  bordercolordark="#FFFFFF">
  14.         <tr>
  15.             <td width=182></td>
  16.             <td width=167></td>
  17.             <td width=179></td>
  18.             <td width=181></td>
  19.         </tr>
  20.          <tr>
  21.             <td width=182></td>
  22.             <td width=167></td>
  23.             <td width=179></td>
  24.             <td width=181></td>
  25.         </tr>
  26.          <tr>
  27.             <td width=182></td>
  28.             <td width=167></td>
  29.             <td width=179></td>
  30.             <td width=181></td>
  31.         </tr>
  32.          <tr>
  33.             <td width=182></td>
  34.             <td width=167></td>
  35.             <td width=179></td>
  36.             <td width=181></td>
  37.         </tr>
  38.          <tr>
  39.             <td width=182></td>
  40.             <td width=167></td>
  41.             <td width=179></td>
  42.             <td width=181></td>
  43.         </tr>
  44.         <tr>
  45.             <td width=182></td>
  46.             <td width=167></td>
  47.             <td width=179></td>
  48.             <td width=181></td>
  49.         </tr>
  50.          <tr>
  51.             <td width=182></td>
  52.             <td width=167></td>
  53.             <td width=179></td>
  54.             <td width=181></td>
  55.         </tr>
  56.          <tr>
  57.             <td width=182></td>
  58.             <td width=167></td>
  59.             <td width=179></td>
  60.             <td width=181></td>
  61.         </tr>
  62.          <tr>
  63.             <td width=182></td>
  64.             <td width=167></td>
  65.             <td width=179></td>
  66.             <td width=181></td>
  67.         </tr>
  68.          <tr>
  69.             <td width=182></td>
  70.             <td width=167></td>
  71.             <td width=179></td>
  72.             <td width=181></td>
  73.         </tr>
  74.           <tr>
  75.             <td width=182></td>
  76.             <td width=167></td>
  77.             <td width=179></td>
  78.             <td width=181></td>
  79.         </tr>
  80.          <tr>
  81.             <td width=182></td>
  82.             <td width=167></td>
  83.             <td width=179></td>
  84.             <td width=181></td>
  85.         </tr>
  86.          <tr>
  87.             <td width=182></td>
  88.             <td width=167></td>
  89.             <td width=179></td>
  90.             <td width=181></td>
  91.         </tr>
  92.          <tr>
  93.             <td width=182></td>
  94.             <td width=167></td>
  95.             <td width=179></td>
  96.             <td width=181></td>
  97.         </tr>
  98.          <tr>
  99.             <td width=182></td>
  100.             <td width=167></td>
  101.             <td width=179></td>
  102.             <td width=181></td>
  103.         </tr>
  104.          <tr>
  105.             <td width=182></td>
  106.             <td width=167></td>
  107.             <td width=179></td>
  108.             <td width=181></td>
  109.         </tr>
  110.         <tr>
  111.             <td colspan="4"></td>
  112.         </tr>
  113.      
  114.        </table>
  115.        <table width="727" border=0>
  116.                 <tr>
  117.             <td height="30" width=182  align=left ><font face="Arial, Helvetica, sans-serif" color="#58ab27">Nuestra Ref. :</font></td>
  118.             <td width=167><font face="Arial, Helvetica, sans-serif" color="#919191">Cot. </font></td>
  119.             <td width=167></td>
  120.             <td width=179 align="right"><font face="Arial, Helvetica, sans-serif" color="#58ab27">Fecha :</font></td>
  121.             <td width=181 align=left ><font face="Arial, Helvetica, sans-serif" color="#919191">04/07/2013</font></td>
  122.         </tr>
  123.         <tr>
  124.             <td height="30" width=182  align=left ><font face="Arial, Helvetica, sans-serif" color="#58ab27">A :</font></td>
  125.             <td colspan="3"><font face="Arial, Helvetica, sans-serif" color="#919191">Cliente</font></td>
  126.         </tr>
  127.         <tr>
  128.             <td height="30"  width=182  align=left ><font face="Arial, Helvetica, sans-serif" color="#58ab27">Atenci&oacute;n</font></td>
  129.             <td colspan="3"><font face="Arial, Helvetica, sans-serif" color="#919191">Contacto</font></td>
  130.         </tr>
  131.           <tr>
  132.             <td height="30" width=182  align=left ><font face="Arial, Helvetica, sans-serif" color="#58ab27">Referencia :</font></td>
  133.             <td colspan="3"><font face="Arial, Helvetica, sans-serif" color="#919191">Nombre Proyecto</font></td>
  134.         </tr>
  135.         <tr>
  136.             <td colspan="4" height="20"></td>
  137.         </tr>
  138.         <tr>
  139.            <td colspan="4"><font face="Arial, Helvetica, sans-serif" color="#58ab27">SEC ofrece el suministro del equipo el&eacute;ctrico de la siguiente manera:</font></td>
  140.         </tr>
  141.           <tr>
  142.            <td colspan="5">
  143.                                                
  144.            </td>
  145.         </tr>
  146.          <tr>
  147.            <td colspan="5"></td>
  148.         </tr>
  149.          <tr>
  150.            <td height="14" colspan="5"></td>
  151.         </tr>
  152.          <tr>
  153.            <td colspan="5"></td>
  154.         </tr>
  155.          
  156.      </table>
  157.      <table width="727">
  158.                         <tr bgcolor="#58ab27">
  159.                         <td width=27  align=left ><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">Item</font></td>
  160.                         <td width=387  align=left ><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">Descripci&oacute;n</font></td>
  161.                         <td width=32  align=center ><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">QTY</font></td>
  162.                         <td width=90  align=center ><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">Unitaria</font></td>
  163.                         <td width=90  align=center ><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">Total</font></td>
  164.                                 </tr>
  165.                     <tr>
  166.                         <td width=27  align=left ><font face="Arial, Helvetica, sans-serif" color="#919191">1</font></td>
  167.                         <td width=387  align=left ><font face="Arial, Helvetica, sans-serif" color="#919191">de</font></td>
  168.                         <td width=32  align=center ><font face="Arial, Helvetica, sans-serif" color="#919191">1</font></td>
  169.                         <td width=90  align=center ><font face="Arial, Helvetica, sans-serif" color="#919191">000.000</font></td>
  170.                         <td width=90  align=center ><font face="Arial, Helvetica, sans-serif" color="#919191">000.000</font></td>
  171.                                 </tr>
  172.                      <tr bgcolor="#58ab27">
  173.                         <td width=27  align=left ><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"></font></td>
  174.                         <td width=387  align=left ><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">TOTAL (Precio en D&oacute;lares Americanos no incluye IVA)</font></td>
  175.                         <td width=32  align=center ><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"></font></td>
  176.                         <td width=90  align=center ><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">USD</font></td>
  177.                         <td width=90  align=center ><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">000.000</font></td>
  178.                                 </tr>          
  179.              </table>
  180.              <table width="765">
  181.                  <tr>
  182.                    <td height="50" colspan="5"><font face="Arial, Helvetica, sans-serif" size="+1" color="#58ab27"><strong>Plazos de entrega a partir de la puesta en vigencia del contrato</strong></font></td>
  183.                 </tr>
  184.                 <tr>
  185.                    <td height="30" colspan="2"><font face="Arial, Helvetica, sans-serif" color="#58ab27">Env&iacute;o de planos para aprobaci&oacute;n :</font></td>
  186.                    <td height="30" colspan="3"><font face="Arial, Helvetica, sans-serif" color="#919191">03 Semanas</font></td>
  187.  
  188.                 </tr>
  189.                  <tr>
  190.                    <td height="30" colspan="2"><font face="Arial, Helvetica, sans-serif" color="#58ab27">Equipos listos para inspecci&oacute;n en fabrica :</font></td>
  191.                    <td height="30" colspan="2"><font face="Arial, Helvetica, sans-serif" color="#919191">12 Semanas, a partir de aprobaci&oacute;n de planos
  192. por parte de cliente</font></td>
  193.                 </tr>
  194.                   <tr>
  195.                    <td height="57" colspan="5"><font face="Arial, Helvetica, sans-serif" size="+1" color="#58ab27"><strong>Documentos adjuntos</strong></font></td>
  196.                </tr>
  197.                 <tr>
  198.                    <td width="209" height="30"><font face="Arial, Helvetica, sans-serif" color="#58ab27">Anexo 01 :</font></td>
  199.                    <td height="30" colspan="3"><font face="Arial, Helvetica, sans-serif" color="#58ab27">Condiciones Generales de Venta ref. SCH-19926 / Rev.3  Diciembre de 2007.</font></td>
  200.                 </tr>
  201.                  <tr>
  202.                    <td height="30"><font face="Arial, Helvetica, sans-serif" color="#58ab27">Anexo 02 :</font></td>
  203.                    <td height="30" colspan="3"><font face="Arial, Helvetica, sans-serif" color="#58ab27">Especificaci&oacute;n T&eacute;cnica Celdas de Mt SM6 Cot.20000518.</font></td>
  204.                 </tr>
  205.                    
  206.              </table>
  207.              <table width="671">
  208.              <tr>
  209.                         <td height="30" colspan="5" ><font face="Arial, Helvetica, sans-serif" color="#58ab27"></font></td>
  210.                 </tr>
  211.                                    <tr>
  212.                         <td height="102" colspan="5"><font face="Arial, Helvetica, sans-serif" color="#58ab27">Si el cliente acepta esta oferta, por favor devolver una copia firmada (con anexos)</font></td>
  213.                </tr>
  214.  
  215.              <tr>
  216.                    <td width="167" height="30" ><font face="Arial, Helvetica, sans-serif" color="#58ab27">Firma por SEC</font></td>
  217.  
  218.                    <td width="255" height="30" align="center"><font face="Arial, Helvetica, sans-serif" color="#919191">Nombre Responsable</font></td>
  219.  
  220.                    <td width="263" height="30" align="center"><font face="Arial, Helvetica, sans-serif" color="#919191">Nombre TCO</font></td>
  221.  
  222.                 </tr>
  223.                  <tr>
  224.                    <td height="30" ><font face="Arial, Helvetica, sans-serif" color="#58ab27">Fecha : 04/07/2013 </font></td>
  225.  
  226.                    <td width="255" height="30" align="center"><font face="Arial, Helvetica, sans-serif" color="#919191">Responsable Comercial</font></td>
  227.  
  228.                    <td width="263" height="30"  align="center"><font face="Arial, Helvetica, sans-serif" color="#919191">Ing. T&eacute;cnico Comercial Ofertas</font></td>
  229.  
  230.                 </tr>
  231.                 <tr>
  232.                    <td height="60" colspan="5"><font face="Arial, Helvetica, sans-serif" color="#58ab27"></font></td>
  233.              
  234.                </tr>
  235.                 <tr>
  236.                                         <td height="30" colspan="5" align="center"><font face="Arial, Helvetica, sans-serif" color="#58ab27">Firma por Cliente </font></td>
  237.                                 </tr>
  238.                   <tr>
  239.                                         <td height="30" colspan="5" align="center"><font size="-1" face="Arial, Helvetica, sans-serif" color="#58ab27">Fecha 04/07/2013 </font></td>
  240.                                 </tr>
  241.              </table>
  242.  
  243. </body>
  244. </html>
  245.  
  246. |);
  247.  
  248. my $pdf = $htmldoc->generate_pdf();
  249. $pdf->to_file('Cotizacion.pdf');
  250.  
Coloreado en 0.009 segundos, usando GeSHi 1.0.8.4

¿Pueden ayudarme a generar el pdf? Si existe otra forma, pueden orientarme.

De ante mano, gracias.
tolyn
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2011-10-19 08:20 @389

Publicidad

Re: Generar PDF

Notapor explorer » 2013-10-22 16:04 @711

Según el manual del módulo HTML::HTMLDoc, es necesario que esté instalado el programa htmldoc.

¿Lo está?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar PDF

Notapor tolyn » 2013-10-23 09:33 @439

¡¡¡¡No sé cómo ver si está instalado!!!!

¿Puedes decirme cómo ver si lo está?

Y los pasos para instalarlo...

Saludos.
tolyn
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2011-10-19 08:20 @389

Re: Generar PDF

Notapor tolyn » 2013-10-23 09:46 @449

explorer. ya logré instalar el programa htmldoc... te agradezco funcionó la generación de PDF...

Pero, cuál programa es mejor para generar PDF ya que mi código es muy engorroso... no sé si habrá otro más fácil de usar... lo digo por los "CCS".

Saludos.
tolyn
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2011-10-19 08:20 @389

Re: Generar PDF

Notapor explorer » 2013-10-23 09:53 @454

Depende del sistema en que estés, pero lo normal es abrir una terminal de línea de comandos, e intentar ejecutar el comando htmldoc. Ahí te dirá si es un comando reconocido (está instalado) o no.

En su página de manual vienen las instrucciones de descarga y compilación. También es posible que exista como paquete de software para tu sistema operativo, así que debes pedirle al administrador de la máquina que lo busque en su lista de software disponible para ser instalado.

Cuidado, porque HTML::HTMLDoc no es un módulo que se instale bien (nada, últimamente).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar PDF

Notapor explorer » 2013-10-23 09:56 @456

¿Qué es "CCS"?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Generar PDF

Notapor tolyn » 2013-10-23 11:47 @532

explorer, he podido generar el PDF del código que he subido pero estoy trabajando en una aplicación en la cual tengo un HTX (template html) como principal y él en su iframe cargo las pantalla htx las cuales son llamadas por sus archivos Perl quienes procesan la información pero al conectar el Perl que imprime PDF no funciona pero no así si lo ejecuto directamente en consola... ¿Qué puede ser...?

Si me puedes orientar. te lo agradezco de nuevo...

Saludos.
tolyn
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2011-10-19 08:20 @389

Re: Generar PDF

Notapor explorer » 2013-10-23 12:21 @556

Seguramente, al ejecutarlo desde el servidor web, las rutas PATH serán distintas.

Puedes intentar modificar la línea
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         ($pid,$pdf,$error) = $self->_run("htmldoc  $params --webpage -", $self->get_html_content());
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
donde pone htmldoc pones la ruta completa a ese binario. Por ejemplo, /usr/local/bin/htmldoc

Has de poner el mismo valor en la línea 997.

Podría darse también el caso de que el proceso no pueda conectarse usando IPC con el binario htmldoc, así que hay que hacer que el módulo trabaje en modo archivo (sacado de la página de manual):

my $htmldoc = new HTMLDoc('mode'=>'file', 'tmpdir'=>'/tmp');

Presta también atención a la variable de entorno HTMLDOC_NOCGI. No es lo mismo ejecutar htmldoc desde la consola que desde una página web.

¿Qué es "CCS"?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron