Foros del Web » Programando para Internet » PHP »

Aporte/ejemplo crear pdf haciendo clic con dompdf

Estas en el tema de Aporte/ejemplo crear pdf haciendo clic con dompdf en el foro de PHP en Foros del Web. Últimamente en el foro se han visto muchas preguntas y errores de como convertir el html a pdf usando diferentes librerías. En este ejemplo sencillo ...
  #1 (permalink)  
Antiguo 07/06/2011, 11:29
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Aporte/ejemplo crear pdf haciendo clic con dompdf

Últimamente en el foro se han visto muchas preguntas y errores de como convertir el html a pdf usando diferentes librerías.
En este ejemplo sencillo usaremos una función para generar un pdf con dompdf.

Por supuesto el ejemplo es mejorable ya que sólo es una idea, pero espero mostrar una manera diferente de usar dompdf con tan solo una función, ya que la gente sólo hace copy & paste de los tutoriales y no salen de ahí.

Descargar dompdf: http://code.google.com/p/dompdf/downloads/list
Demos: http://pxd.me/dompdf/www/examples.php#samples

¿Qué conseguimos en este ejemplo?
  • No generaremos el pdf al cargar la página sino haciendo clic a un botón.
  • Mostraremos en el pdf toda la página o sólo una parte (lo que contenga la variable que enviemos).
  • Podremos usar css diferentes en el pdf a la que usamos en la página.
  • Se puede guardar el pdf en un directorio antes de mostrarlo.
  • También contaremos con la posibilidad de cambiar el tamaño y formato del documento (consulten como ver los formatos en la documentación).

Cosas importantes a tener en cuenta de dompdf:
handles most CSS 2.1 and a few CSS3 properties
image support (gif, png (8, 24 and 32 bit with alpha channel), bmp & jpeg)

Importante también saber que dompdf necesita las rutas absolutas para cargar las imágenes.

convertToPDF.php
Código PHP:
<?php
/*----------------------------------------------------------/*
    
$path     : nombre y/o ruta del pdf (sin la extensión)
                p.e: --> 'ejemplo' , 'pdfs/nuevo-ejemplo'
                si se deja vacío --> se genera uno aleatorio

$content  : contenido del pdf

$body     : true o false.
                true  --> Añade; <doctype>, <body>, <head> a $content
                false --> no altera el $content
                
$style    : la ruta de la CSS. Puede estar vacía
                 Para cargar una css --> necesita $body = true;

$mode     : true o false.
                true  --> guarda el pdf en un directorio y lo muestra 
                false --> pregunta si guarda o abre el archivo 
            
$paper_1  : tamaño del papel[*]
$paper_2  : estilo del papel[*]
    
    [*] como ver las opciones disponibles: 
        --> http://code.google.com/p/dompdf/wiki/Usage#Invoking_dompdf_via_the_command_line

/*----------------------------------------------------------*/ 

require_once("dompdf/dompdf_config.inc.php");

function 
doPDF($path='',$content='',$body=false,$style='',$mode=false,$paper_1='a4',$paper_2='portrait')
{    
    if( 
$body!=true and $body!=false $body=false;
    if( 
$mode!=true and $mode!=false $mode=false;
    
    if( 
$body == true )
    {
        
$content='
        <!doctype html>
        <html>
        <head>
            <link rel="stylesheet" href="'
.$style.'" type="text/css" />
        </head>
        <body>'
            
.$content.
        
'</body>
        </html>'
;
    }
    
    if( 
$content!='' )
    {        
        
//Añadimos la extensión del archivo. Si está vacío el nombre lo creamos
        
$path!='' $path .='.pdf' $path crearNombre(10);  

        
//Las opciones del papel del PDF. Si no existen se asignan las siguientes:[*]
        
if( $paper_1=='' $paper_1='a4';
        if( 
$paper_2=='' $paper_2='portrait';
            
        
$dompdf =  new DOMPDF();
        
$dompdf -> set_paper($paper_1,$paper_2);
        
$dompdf -> load_html(utf8_encode($content));
        
//ini_set("memory_limit","32M"); //opcional 
        
$dompdf -> render();
        
        
//Creamos el pdf
        
if($mode==false)
            
$dompdf->stream($path);
            
        
//Lo guardamos en un directorio y lo mostramos
        
if($mode==true)
            if( 
file_put_contents($path$dompdf->output()) ) header('Location: '.$path);
    }
}

function 
crearNombre($length)
{
    if( ! isset(
$length) or ! is_numeric($length) ) $length=6;
    
    
$str  "0123456789abcdefghijklmnopqrstuvwxyz";
    
$path '';
    
    for(
$i=$i<$length $i++)
      
$path .= $str{rand(0,strlen($str)-1)};

    return 
$path.'_'.date("d-m-Y_H-i-s").'.pdf';    
}

?>
index.php
Código PHP:
<?php

include('convertToPDF.php');

//$html= --> Aquí pondriamos por ejemplo la consulta
$html='
<img src="http://pxd.me/dompdf/www/images/title.gif"/>

<table>
    <tr>
        <th>Nombre</th>
        <th>Tipo</th>
        <th>Imagen</th>
        <th>Comentario</th>
        <th>Unidades</th>
        <th>Precio unidad</th>    
    </tr>    
    <tr>
        <td>pensandoo</td>
        <td>icono</td>
        <td><img src="http://static.forosdelweb.com/fdwtheme/images/smilies/scratchchin.gif"/></td>
        <td>iconito pensativo</td>
        <td>3</td>
        <td>10</td>
    </tr>
    <tr>
        <td>fiesta</td>
        <td>icono 3</td>
        <td><img src="http://static.forosdelweb.com/fdwtheme/images/smilies/porra.gif"/></td>
        <td>iconito festejando</td>
        <td>1</td>
        <td>24</td>
    </tr>
    <tr>
        <td>silbando</td>
        <td>icono</td>
        <td><img src="http://static.forosdelweb.com/fdwtheme/images/smilies/silbar.gif"/></td>
        <td>bombilla silbando</td>
        <td>19</td>
        <td>50</td>
    </tr>
    <tr>
        <td>no no no</td>
        <td>icono 2</td>
        <td><img src="http://static.forosdelweb.com/fdwtheme/images/smilies/negar.gif"/></td>
        <td>negacion</td>
        <td>5</td>
        <td>1</td>
    </tr>
</table>
'

?>

<?php

if ( isset($_POST['PDF_1']) )
    
doPDF('ejemplo',$html,false);

if ( isset(
$_POST['PDF_2']) )
    
doPDF('ejemplo',$html,true,'style.css');

if ( isset(
$_POST['PDF_3']) )
    
doPDF('',$html,true,'style.css');
            
if ( isset(
$_POST['PDF_4']) )
    
doPDF('ejemplo',$html,true,'style.css',false,'letter','landscape'); 
    
if ( isset(
$_POST['PDF_5']) )
    
doPDF('ejemplo',$html,true,'',true); //asignamos los tags <html><head>... pero no tiene css

if ( isset($_POST['PDF_6']) )
    
doPDF('',$html,true,'style.css',true);
    
if ( isset(
$_POST['PDF_7']) )
    
doPDF('pdfs/nuevo-ejemplo',$html,true,'style.css',true); //lo guardamos en la carpeta pdfs    
?>

<!doctype html>
<html>

<head>
    <link rel="stylesheet" href="style.css" type="text/css" />
</head>

<table class="header">
    <tr>
        <td><a href="http://www.forosdelweb.com/f18/" target="_blank"><h1>PHP</h1></a></td>
        <td><a href="http://www.forosdelweb.com/" target="_blank"><h2>FOROSDELWEB</h2></a></td>
    </tr>
</table>

<table class="menu">
    <tr>
        <td>Ejemplos para: <strong>dompdf</strong></td>
        <td><a href="http://code.google.com/p/dompdf/wiki/Usage" target="_blank">Documentaci&oacute;n</a></td>
        <td><a href="http://code.google.com/p/dompdf/source/browse/trunk/dompdf/dompdf_config.custom.inc.php?r=399" target="_blank">Define()</a></td>
        <td><a href="http://pxd.me/dompdf/www/examples.php#samples" target="_blank">Ejemplos de dompdf</a></td>
    </tr>
</table>

<body>

<?php echo $html ?>

<form  action="<?php echo $_SERVER['PHP_SELF'?>" method="POST">
<table>
  <tr>
    <td>Mostrar PDF sin CSS</td>
    <td><input name="PDF_1" type="submit" value="CREAR" /></td>
  </tr>
  <tr>
    <td>Mostrar PDF con CSS</td>
    <td><input name="PDF_2" type="submit" value="CREAR" /></td>
  </tr>
  <tr>
    <td>Mostrar PDF con CSS sin definir el nombre</td>
    <td><input name="PDF_3" type="submit" value="CREAR" /></td>
  </tr>
  <tr>
    <td>Mostrar PDF con CSS y cambiando el formato de la hoja</td>
    <td><input name="PDF_4" type="submit" value="CREAR" /></td>
  </tr>
  <tr>
    <td>Guardar y abrir PDF sin CSS</td>
    <td><input name="PDF_5" type="submit" value="CREAR" /></td>
  </tr>
  <tr>
    <td>Guardar y abrir PDF con CSS sin definir el nombre</td>
    <td><input name="PDF_6" type="submit" value="CREAR" /></td>
  </tr>
  <tr>
    <td>Guardar en otro directorio y abrir PDF con CSS</td>
    <td><input name="PDF_7" type="submit" value="CREAR" /></td>
  </tr>  
  
</table>

</form>

</body>
</html>
style.css
Código HTML:
body{
font:12px Arial, Tahoma, Verdana, Helvetica, sans-serif;
background-color:#BECEDC;
color:#000;
}

a h1{
font-size:35px;	
color:#FFF;
}

h2{
color:#FC0;
font-size:15px;	
}

table{
width:100%;
height:auto;
margin:10px 0 10px 0;
border-collapse:collapse;
text-align:center;
background-color:#365985;
color:#FFF;
}

table td,th{
border:1px solid black;
}

table th{
color:#FC0;	
}

.menu{
background-color:#69C;
color:#FFF;
}

.menu a{
color:#FFF;	
}
Imagen de index.php


Imagen del pdf sin css


Imagen del pdf con css


Como verán no es tan complicado crear un pdf con dompdf, con un formulario y una función todo arreglado
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #2 (permalink)  
Antiguo 07/06/2011, 11:31
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

excelente aporte
  #3 (permalink)  
Antiguo 07/06/2011, 15:15
Avatar de Ximenitaa  
Fecha de Ingreso: abril-2011
Ubicación: Mexico
Mensajes: 208
Antigüedad: 13 años
Puntos: 43
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

excelente aportacion compañero !!!!
__________________
❤(。◕‿◕)❤ . . . Ten un dia .... GeNiAl.... !!!! . . . ❤(◕‿◕。)❤

¿Que dia es hoy? . . . Hoy, hoy, es definitivamente un dia PERFECTO !!
  #4 (permalink)  
Antiguo 07/06/2011, 15:28
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

eficiente y fácil de entender

y las imágenes ayudan bastante :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #5 (permalink)  
Antiguo 07/06/2011, 15:33
Avatar de Potro  
Fecha de Ingreso: abril-2001
Mensajes: 2.249
Antigüedad: 23 años
Puntos: 39
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

Realmente hace mucho tiempo use el dompdf, aun que realmente se me hace uan muy tedioso por la forma de que debes de crear tu html..

Código PHP:
Ver original
  1. $content='
  2.        <!doctype html>
  3.        <html>
  4.        <head>
  5.            <link rel="stylesheet" href="'.$style.'" type="text/css" />
  6.        </head>
  7.        <body>'
  8.             .$content.
  9.         '</body>
  10.        </html>';


si llegas a requerir validaciones, bucles, algo muy dinamico esto del dompdf no es muy amigable yo la vdd prefiero mucho mas a html2pdf ya que tu creas tu archivo dinamico y solo lo mandas a llamar con unas cuantas lineas..


Bueno aun que obvio se agradece demaciado un aporte asi.. solo es mi opinion..

Saludos colegas...
__________________
Paginación en FLASH,

http://www.forosdelweb.com/f62/pagin...o-aqui-540241/
  #6 (permalink)  
Antiguo 08/06/2011, 02:41
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

Cita:
Iniciado por Potro Ver Mensaje
Realmente hace mucho tiempo use el dompdf, aun que realmente se me hace uan muy tedioso por la forma de que debes de crear tu html..

Código PHP:
Ver original
  1. $content='
  2.        <!doctype html>
  3.        <html>
  4.        <head>
  5.            <link rel="stylesheet" href="'.$style.'" type="text/css" />
  6.        </head>
  7.        <body>'
  8.             .$content.
  9.         '</body>
  10.        </html>';


si llegas a requerir validaciones, bucles, algo muy dinamico esto del dompdf no es muy amigable yo la vdd prefiero mucho mas a html2pdf ya que tu creas tu archivo dinamico y solo lo mandas a llamar con unas cuantas lineas..


Bueno aun que obvio se agradece demaciado un aporte asi.. solo es mi opinion..

Saludos colegas...
Supongo que tendré que hacer un ejemplo similar para html2pdf jeje.

dompdf al igual que html2pdf también puede mostrar el pdf sin añadir eso.
De echo imprime todo lo que esté en la página (Exactamente igual que html2pdf)
Te doy la razón en que no es muy amigable en algunas cosas, pero html2pdf tampoco es perfecto... no hay más que ver que no cogen todas las propiedades de las CSS.

Esas líneas están en la función para asignar otra css al archivo pdf. ¿Quien dice que queremos que la apariencia sea igual a la de la página?
En ocaciones las empresas quieren que se le añada el logotipo a la factura en pdf y cambiar los colores.

No te niego que el ejemplo es mejorable y que html2pdf tiene buenas opciones , pero la idea era mostrar como "imprimir" en un pdf SÓLO una parte, ya que los tutoriales y el usage únicamente crea el pdf al ejecutar la página y la gente que no tiene mucha experiencia en php se pueden quedar atascados.

Gracias por tu apreciación.
Como dije no digo que estés equivocado, pero incluso del html2pdf hay poca documentación para la gente que no sabe mucho de php.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #7 (permalink)  
Antiguo 08/06/2011, 05:54
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

Para lso que prefieran html2pdf...
http://www.forosdelweb.com/f18/aport...ml2pdf-919698/
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #8 (permalink)  
Antiguo 20/06/2011, 15:36
 
Fecha de Ingreso: junio-2011
Mensajes: 1
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

¿Hay alguna manera de que una imagen aparezca como pie de página en la impresión?
  #9 (permalink)  
Antiguo 22/06/2011, 14:26
 
Fecha de Ingreso: junio-2011
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

gracias por el tutorial. copie el ejemplo y estoy tratando de generar los pdf, pero me da el siguiente error "Unable to stream pdf: headers already sent" ya he revisado todos los scripts php y he eliminados los espacios en blancos al inicio y al final de las etiquetas, agradesco su ayuda..
  #10 (permalink)  
Antiguo 22/06/2011, 14:40
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

Cita:
Iniciado por ralex07 Ver Mensaje
gracias por el tutorial. copie el ejemplo y estoy tratando de generar los pdf, pero me da el siguiente error "Unable to stream pdf: headers already sent" ya he revisado todos los scripts php y he eliminados los espacios en blancos al inicio y al final de las etiquetas, agradesco su ayuda..
no puedes mostrar un archivo pdf si has comenzado a generar el archivo como html
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #11 (permalink)  
Antiguo 23/06/2011, 09:34
 
Fecha de Ingreso: junio-2011
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

stramin, los pdf generados son idénticos a los que IEKK, publicos, tanto el index, como los pdf con y sin css, el problema que tenia era en cuanto a la variable html, borre todos los espacios que existian al final de cada linea y por si acaso tambien los que existian en cada script php y listo me genera los pdf, ahora a realizar el html como lo necesito.
gracias al foro y a cada colaborador, esta pagina me ha ayudado muchismo....
  #12 (permalink)  
Antiguo 28/06/2011, 13:42
 
Fecha de Ingreso: junio-2011
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

Volvi por aqui, ahora necesito ayuda, me da error Allowed memory size of 16777216 bytes exhausted le aumente la memoria con ini_set("memory_limit","128M"); luego me indica estos errores
Notice: Undefined offset: 23 in /home/salapc3/desarrollo/gcontrol/dompdf/include/cellmap.cls.php on line 559
Fatal error: Call to a member function get_id() on a non-object in /home/salapc3/desarrollo/gcontrol/dompdf/include/cellmap.cls.php on line 560
googleando me encontre con estos links que hablan sobre estos errores:
http://drupal.org/node/967942 en este me piden cambiar la linea 560 pero nada el error es mas grande aun.
http://groups.google.com/group/dompdf/browse_thread/thread/8509d6b59151595 en este link habla de que dompdf, no soporta html avanzado.
ahora mi html, es una tabla en cuyas celdas hay varias uniones (colspan y rowspan).
agradecido a todos por su ayuda.
  #13 (permalink)  
Antiguo 30/06/2011, 17:09
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

Cita:
Iniciado por ralex07 Ver Mensaje
Volvi por aqui, ahora necesito ayuda, me da error Allowed memory size of 16777216 bytes exhausted le aumente la memoria con ini_set("memory_limit","128M"); luego me indica estos errores
Notice: Undefined offset: 23 in /home/salapc3/desarrollo/gcontrol/dompdf/include/cellmap.cls.php on line 559
Fatal error: Call to a member function get_id() on a non-object in /home/salapc3/desarrollo/gcontrol/dompdf/include/cellmap.cls.php on line 560
googleando me encontre con estos links que hablan sobre estos errores:
http://drupal.org/node/967942 en este me piden cambiar la linea 560 pero nada el error es mas grande aun.
http://groups.google.com/group/dompd...509d6b59151595 en este link habla de que dompdf, no soporta html avanzado.
ahora mi html, es una tabla en cuyas celdas hay varias uniones (colspan y rowspan).
agradecido a todos por su ayuda.
Uy llegué tarde a ver tu duda, no sé si seguirás por el foro pero por si le sirve a alguien:
El primero lo resolviste bien usando ini_set("memory_limit","128M");

En el siguiente, fíjate que tu error pone:
include/cellmap.cls.php Por tanto deberías revisar tu tabla ya que seguramente tienes algún tag de la misma sin cerrar o su estructura está mal creada. Puede ser algún tr o td sin cerrar bien.

Además puedes mirar en la documentación de dompdf acerca de que html y css debes usar, por si fuese ese tu problema.

Recuerden que hasta el momento no hay (o al menos no he visto) una librería que genere el pdf con html a la perfección... Lo cual es bastante comprensible
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #14 (permalink)  
Antiguo 14/07/2011, 10:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 9
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

tengo una duda con eso como puedo hacer para que se imprima el pdf los campos de texto y los checkbox en pocas palabras los inputs,
el dompdf acepta los imput?
  #15 (permalink)  
Antiguo 23/07/2011, 22:57
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

hola, gracias por el gran aporte amigo, esta super los ejemplos, el codigo y demas, pero me sale un erro al oprimir los botones:


Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1572864 bytes) in C:\AppServ\www\DOMPDF\dompdf\lib\class.pdf.php(221 9) : eval()'d code on line 5914

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1572864 bytes) in C:\AppServ\www\DOMPDF\dompdf\lib\class.pdf.php(221 9) : eval()'d code on line 5914


y asi en todos, por que razon no me da el ejemplo.¿? les agradeceria. mucho si me ayudan
  #16 (permalink)  
Antiguo 14/08/2011, 01:59
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

Disculpen no suelo revisar mis post viejos.
Por si aún te sirve o le sirve a alguien más eso es debido a que tienes que aumentar la memoria.

Esto ya se dijo en los post anteriores de este mismo hilo pero sólo debes usar:

ini_set("memory_limit","aquí la cantidad de memoria");

Por ejemplo:

Código PHP:
ini_set("memory_limit","128M"); 
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #17 (permalink)  
Antiguo 02/06/2012, 10:25
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

Esta excelente el aporte de verdad gracias ya lo probe y me gusta... pero puedo hacerte una pregunta... es que quisiera saber como podria hacer que una tabla de una base de datos se me muestre como pdf tambien.... porque he intentado que me se me muestre de esa manera... lo que pasa es que quiero que se me muestre una tabla en pdf pero de una manera mas dinamica y con estilo, pero la verdad no se como podria poner el codigo php en la variable $html='';
he intentado de esta manera y nada aqui te la muestro para ver si me ayudarias... pero tambien quisiera saber como iria en este lugar la condicion while en la varible $html=' ';

Código Javascript:
Ver original
  1. while($MostrarFila= mysql_fetch_array($showsql)){
  2.  ..................
  3. }
para que los listara y se mostrara como pdf


Código Javascript:
Ver original
  1. include 'connection.php';
  2. $sql = mysql_query("SELECT * FROM usuario WHERE cedula = 1143347340", $link) or die(mysql_error());
  3. $MostrarFila = mysql_fetch_array($sql);
  4.  
  5. $html='
  6.    <tr>
  7.        <td>fiesta</td>
  8.        <td>'.$MostrarFila['nombre'].'</td>
  9.        <td><img src="http://static.forosdelweb.com/fdwtheme/images/smilies/porra.gif"/></td>
  10.        <td>iconito festejando</td>
  11.        <td>1</td>
  12.        <td>24</td>
  13.    </tr>    
  14. </table>'

de verdad te lo agradeceria....
  #18 (permalink)  
Antiguo 07/06/2012, 16:53
 
Fecha de Ingreso: septiembre-2011
Ubicación: Tabasco
Mensajes: 1
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

¿Se puede convertir una página PHP con dompdf a PDF?
  #19 (permalink)  
Antiguo 07/06/2012, 20:44
Avatar de mft
mft
 
Fecha de Ingreso: abril-2003
Ubicación: *
Mensajes: 239
Antigüedad: 21 años
Puntos: 4
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

claro que se puede irving_tg , todo lo pones en tu variable content, puedes usar consultas a bases de datos, o textos estáticos, o puro html. Es una buena librería!!
__________________
Lo que haces, determina lo que eres.
Saludos!
  #20 (permalink)  
Antiguo 19/04/2013, 14:09
Avatar de pdominguez0608  
Fecha de Ingreso: enero-2013
Ubicación: Alcobendas
Mensajes: 40
Antigüedad: 11 años, 3 meses
Puntos: 0
una auyuda, por favor

Muy buenas.
basándome en los ficheros que has puesto, he creado un documento de factura, este, llama datos de MySQL (5 juegos de registro), he puesto el
Código PHP:
<?php echo $strHTML ?>
y por pantalla sale bien.
he dejado solo el botón de PDF_7 (nombre aleatorio en directorio) y no he modificado el fichero "convertToPDF.php", bueno, he cambiado el directorio pdfs por facturas.
y al dar al botón para imprimir me da el error:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"
(que genérico....)

y no se por donde puede estar el error...

¿alguna idea?
gracias
aquí dejo el código:
emitir_factura.php

Código PHP:
AQUI LAS CONSULTAS DE MySQL

</head>

<body>

<div class='container'>
  <div class='contentFactura'>
      <div class='factura'>  
   <?php 
$strHTML 
'<table width="100%" border="0" cellspacing="0" cellpadding="10"><tr>';
$strHTML $strHTML.'<td width="39%"><img src="http://www.forosdelweb.com/f18/images/punto3.jpg" width="205" height="76" alt="Logo"></td>';
$strHTML $strHTML.'<td width="61%">&nbsp;</td></tr>';
$strHTML $strHTML.'<tr><td><strong>Fecha Factura: </strong>'.date("d-m-Y").' <br />
      <strong>Fecha de compra</strong>: '
.$row_DatosCompra['fchCompra'].'</td>';
$strHTML $strHTML.'<td><strong>Factura N&deg;: </strong>AA '.date("Y").'-'.$row_DatosCompra['idCompra'].'</td></tr>';

$strHTML $strHTML.'</table><br>';
$strHTML $strHTML.'<table width="100%" border="0" cellspacing="0" cellpadding="2"><tr>';
$strHTML $strHTML.'<td width="15%" align="right"><strong>Nombre:</strong></td>';
$strHTML $strHTML.'<td width="36%">'.$row_DatosUsuario['strNombre'].' '.$row_DatosUsuario['strApellidos'].'</td>';
$strHTML $strHTML.'<td width="15%" rowspan="7">&nbsp;</td>';
$strHTML $strHTML.'<td width="34%"><h2>'.$row_DatosTienda['strRazonSocial'].'</h2></td></tr>';
$strHTML $strHTML.'<tr><td align="right"><strong>D.N.I./C.I.F.:</strong></td>';
$strHTML $strHTML.'<td>'.$row_DatosUsuario['strDni'].'</td>';
$strHTML $strHTML.'<td>'.$row_DatosTienda['strCIF'].'</td></tr>';
$strHTML $strHTML.' <tr><td align="right"><strong>Direcci&oacute;n:</strong></td>';
$strHTML $strHTML.'<td>'.$row_DatosDireccion['strCalle'].', '.$row_DatosDireccion['strNumero'].' '.$row_DatosDireccion['strPiso'].' '.$row_DatosDireccion['strLetra'].'<br />'.$row_DatosDireccion['strExtension'].'</td>';
$strHTML $strHTML.' <td>'.$row_DatosTienda['strCalle'].', '.$row_DatosTienda['strNumero'].' '.$row_DatosTienda['strPiso'].' '.$row_DatosTienda['strLetra'].'<br />'.$row_DatosTienda['strExtension'].'</td></tr>';
$strHTML $strHTML.'<tr><td align="right"><strong>Poblaci&oacute;n:</strong></td>';
$strHTML $strHTML.'<td>'.$row_DatosDireccion['strPoblacion'].'</td>';
$strHTML $strHTML.'<td>'.$row_DatosTienda['strPoblacion'].'</td></tr>';
$strHTML $strHTML.'<tr><td align="right"><strong>C.P.:</strong></td>';
$strHTML $strHTML.'<td>'.$row_DatosDireccion['intCP'].'</td>';
$strHTML $strHTML.'<td>'.$row_DatosTienda['intCP'].'</td></tr>';
$strHTML $strHTML.'<tr><td align="right"><strong>Provincia:</strong></td>';
$strHTML $strHTML.'<td>'.MostrarNombreProvincia($row_DatosDireccion['intProvincia']).'</td>';
$strHTML $strHTML.'<td>'.MostrarNombreProvincia($row_DatosTienda['intProvincia']).'</td></tr>';
$strHTML $strHTML.'<tr><td align="right"><strong>Pais:</strong></td>';
$strHTML $strHTML.'<td>'.MostrarNombrePais($row_DatosDireccion['intPais']).'</td>';
$strHTML $strHTML.'<td>'.MostrarNombrePais($row_DatosTienda['intPais']).'</td></tr></table><br><br>';
$strHTML $strHTML.'<table border="0" cellspacing="0" cellpadding="3">';
$strHTML $strHTML.'<tr align="center">';
$strHTML $strHTML.'<td><strong>Marca</strong></td>';
$strHTML $strHTML.'<td><strong>Producto</strong></td>';
$strHTML $strHTML.'<td><strong>Color</strong></td>';
$strHTML $strHTML.'<td><strong>Talla</strong></td>';
$strHTML $strHTML.'<td><strong>Precio</strong></td>';
$strHTML $strHTML.'<td><strong>Cant.</strong></td>';
$strHTML $strHTML.'<td><strong>Dto.</strong></td>';
$strHTML $strHTML.'<td><strong>Total</strong></td>';
$strHTML $strHTML.' <td colspan="2"><strong>I.V.A.</strong></td>';
$strHTML $strHTML.'<td><strong>Total Linea</strong></td></tr>';
     do { 
   if (
$row_DatosLineas['idProducto']!=90000){
   
//*********** VARIABLES ************
//    *********************************************
                
$precioTicket=0;
                
                     
$descuentoEnLinea=($row_DatosLineas['intCantidad']*$row_DatosLineas['intPrecioUnitario']/100)*$row_DatosCompra['intDescuento'];
                     
$TotalLinea=$row_DatosLineas['intCantidad']*$row_DatosLineas['intPrecioUnitario']-$descuentoEnLinea
                     
$IVALinea=$TotalLinea*$row_DatosLineas['intIVA'];
                     
$IVA=$row_DatosLineas['intIVA']*100;
    
//*********** VARIABLES ************
//    *********************************************
$strHTML $strHTML.' <tr><td align="left">'.ObtenerNombreMarcadeProducto($row_DatosLineas['idProducto']).'</td>';
$strHTML $strHTML.'<td align="left">'.ObtenerNombreProducto($row_DatosLineas['idProducto']).'</td>';
$strHTML $strHTML.'<td align="center">'.ObtenerNombreTalla($row_DatosLineas['intColor']).'</td>';
$strHTML $strHTML.'<td align="center">'.ObtenerNombreTalla($row_DatosLineas['intTalla']).'</td>';
$strHTML $strHTML.'<td align="right">'.$row_DatosLineas['intPrecioUnitario'].'€</td>';
$strHTML $strHTML.'<td align="center">'.$row_DatosLineas['intCantidad'].'</td>';
$strHTML $strHTML.' <td align="center">'.$row_DatosCompra['intDescuento'].'%</td>';
$strHTML $strHTML.'<td align="right">'.round($TotalLinea,2).'€</td>';
$strHTML $strHTML.'<td >'.$IVA.'%</td>';
$strHTML $strHTML.'<td align="right">'.round($IVALinea,2).'€</td>';
$strHTML $strHTML.'<td align="right">'.round($TotalLinea+$IVALinea,2).'€</td></tr>';
       }
               else
              { 
              
//CONTROLAMOS EL TICKET DE DESCUENTO 
               
$precioTicket=$row_DatosLineas['dblTicket'];
      
      
$strHTML $strHTML.'<tr><td>&nbsp;</td>';
                
$strHTML $strHTML.'<td>Ticket Descuento</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td align="right">-'.$row_DatosLineas['dblTicket'].'€</td>';
      
        
//FIN DE CONTROLAMOS EL TICKET DE DESCUENTO
               
}
     } while (
$row_DatosLineas mysql_fetch_assoc($DatosLineas));

$strHTML $strHTML.'</table><br><br>';
$strHTML $strHTML.'<br /><br /><br />';
$strHTML $strHTML.'<table border="0" align="right" cellpadding="4" cellspacing="0"><tr>';
$strHTML $strHTML.'<td align="right"><strong>Sub-Total:</strong></td>';
$strHTML $strHTML.' <td align="right">'.$row_DatosCompra['dblSubTotal'].'€</td></tr>';
$strHTML $strHTML.' <tr><td align="right"><strong>Total I.V.A.:</strong></td>';
$strHTML $strHTML.'<td align="right">'.$row_DatosCompra['dblTotalIVA'].'€</td></tr>';
$strHTML $strHTML.'<tr><td align="right"><strong>Gastos de env&iacute;o:</strong></td>';
$strHTML $strHTML.' <td align="right">'.$row_DatosCompra['dblGastosEnvio'].'€</td></tr>';

  if (
$precioTicket>0) {
  
$strHTML $strHTML.'<tr><td align="right"><strong>Ticket Dto.:</strong></td>';
$strHTML $strHTML.'<td align="right">-'.$precioTicket.'€</td></tr>';
      }
  
$totalFactura=$row_DatosCompra['dblTotal']-$precioTicket;
$strHTML $strHTML.'<tr><td align="right"><strong>TOTAL:</strong></td>';
$strHTML $strHTML.'<td align="right">'.$totalFactura.'€</td></tr></table>';



if ( isset(
$_POST['PDF_7']) ) 
    
doPDF("",$strHTML,true,"style.css",true); //lo guardamos en la carpeta pdfs     
 
echo $strHTML ?>
 <!-- end .contentfactura --></div>
   <!-- end .content --></div>
  <div class='footer'>
    <p><div class="formulario">
<form  action='<?php echo $_SERVER['PHP_SELF'?>' method='POST'> 
<input name='PDF_7' type='submit' value='CREAR FACTURA' />

</form> </div></p>




  </div>
<!-- end .container --></div>
</body>
<!-- InstanceEnd --></html>
<?php
mysql_free_result
($DatosTienda);

mysql_free_result($DatosUsuario);

mysql_free_result($DatosCompra);

mysql_free_result($DatosLineas);

mysql_free_result($DatosDireccion);
?>

Última edición por pdominguez0608; 19/04/2013 a las 14:16
  #21 (permalink)  
Antiguo 19/04/2013, 14:28
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

Te error está en una de las consultas SQL, te sugiero que abras un nuevo tema y coloques tus consultas y toda la información necesaria para poder ayudarte.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #22 (permalink)  
Antiguo 19/04/2013, 14:59
Avatar de pdominguez0608  
Fecha de Ingreso: enero-2013
Ubicación: Alcobendas
Mensajes: 40
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

gracias por tu respuesta, voy a abrir la nueva consulta, lo puse aquí por que he utilizado los ficheros que detalla arriba

nuevo tema:

http://www.forosdelweb.com/f18/dompdf-mysql-problema-1047648/#post4413993

un saludo
__________________
http://www.facebook.com/Punto3Web

Última edición por pdominguez0608; 19/04/2013 a las 15:39
  #23 (permalink)  
Antiguo 11/12/2013, 19:20
 
Fecha de Ingreso: agosto-2009
Ubicación: Lima
Mensajes: 226
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Aporte/ejemplo crear pdf haciendo clic con dompdf

Cita:
Iniciado por IEKK Ver Mensaje
Supongo que tendré que hacer un ejemplo similar para html2pdf jeje.

dompdf al igual que html2pdf también puede mostrar el pdf sin añadir eso.
De echo imprime todo lo que esté en la página (Exactamente igual que html2pdf)
Te doy la razón en que no es muy amigable en algunas cosas, pero html2pdf tampoco es perfecto... no hay más que ver que no cogen todas las propiedades de las CSS.

Esas líneas están en la función para asignar otra css al archivo pdf. ¿Quien dice que queremos que la apariencia sea igual a la de la página?
En ocaciones las empresas quieren que se le añada el logotipo a la factura en pdf y cambiar los colores.

No te niego que el ejemplo es mejorable y que html2pdf tiene buenas opciones , pero la idea era mostrar como "imprimir" en un pdf SÓLO una parte, ya que los tutoriales y el usage únicamente crea el pdf al ejecutar la página y la gente que no tiene mucha experiencia en php se pueden quedar atascados.

Gracias por tu apreciación.
Como dije no digo que estés equivocado, pero incluso del html2pdf hay poca documentación para la gente que no sabe mucho de php.
hola amios, diganme cual es mejor el dompdf o html2pdf para hacer un reporte de 60 paginas donde cada pagina tenga la misma cabecera al igual que el pie de pagina.

Sugieran por favor y si tienen algun ejemplito no descarten en ponerlo.

MUCHAS GRACIASSSSS

Etiquetas: dompdf, 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

SíEste tema le ha gustado a 15 personas




La zona horaria es GMT -6. Ahora son las 15:27.