Ir al contenido


Foto

problema dompdf


  • Por favor identifícate para responder
9 respuestas en este tema

#1 gabyokal

gabyokal

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 12 octubre 2012 - 07:59

Hola, cree un pdf con  dompdf,  hice un test y todo muy bien,
pero cuando agregué una tabla que se crea conforme a los datos que regresa un consulta ya no descarga el PDF :( , ya revisé la sintaxis y según yo está bien, pero no descarga el archivo!!! .. incluso si imprimo la variable del código html, me aparece una tabla como la que quiero que salga en el PDF, me pueden echar una manita a ver qué me falta o el qué esto mal? porfis



public function sendAsPDF($filename){
       
  require_once("dompdf/dompdf_config.inc.php");
     
  $headHtml= "<!doctype html>
        <html>
        <head>
            <?php use_stylesheet('style.css') ?>
        </head>
        <body> ";
 
  $finHtml =stripslashes('</body>  </html>');
 

$tableinit="<table border=2>";
$tablefin ="</table>";

$cont.=$headHtml.$tableinit;
$encabezado= 'Campaing';

  $cont.=stripslashes('<th scope="col">Columna 1</th>');
  $cont.=stripslashes('<th scope="col"></th>');
$cont.=stripslashes('<th scope="col">Columna 2</th>');
  $cont.=stripslashes('<th scope="col"></th>');
$cont.=stripslashes('<th scope="col">Columna 3</th>');

foreach ($this->getAll() as $row) {
    $cont.=stripslashes('<tr>');
    foreach ($row as $v) {
   
          $cont.=stripslashes('<td>');
          $cont.=$v;
          $cont.=stripslashes('<td>');
        }
  $cont.=stripslashes('</tr>');
}

$cont.=$tablefin.$finHtml;

  echo $cont;
        $dompdf = new DOMPDF();
        $dompdf->load_html($cont);
        //$dompdf->set_paper('letter','landscape');
        $dompdf->set_paper("letter", $orientation = "landscape");
        $dompdf->render();
        $dompdf->stream("reporte.pdf");//cambiar nombre por el que se genera con la fecha
    }

  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 12 octubre 2012 - 08:23

Lo que yo veo en tu código es que estás regresando una página html común y corriente y no un archivo a descargar por el navegador... te muestro como lo hago yo con imágenes :



<?php

  require_once("TConfig.php");
  $config = new TConfig();
  $soapClient = new SoapClient($config->GraphServer,array('encoding'=>'ISO-8859-1'));
  $args = array('PsIdInstWrf' =>$_REQUEST['id']);
  $result = $soapClient->__soapCall("GetImagen",$args);
  $imgcode = base64_decode($result->Flujo);
  header('Content-type: image/jpg');
  header('Content-length: '.strlen($imgcode));
  echo $imgcode;
?>




Si observas en el header le indico al navegador que le estoy enviando un archivo de i´magen de x tamaño...

saludox
  • 0

#3 gabyokal

gabyokal

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 12 octubre 2012 - 08:36

me basé en este ejemplo .. y ese sí me salio

http://www.forosdelw...-dompdf-919465/
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 12 octubre 2012 - 08:54

Efectivamente... esta línea en el curso es precisamente la que hace lo que te mostré anterioremente


if($mode==true)
          if( file_put_contents($path, $dompdf->output()) ) header('Location: '.$path);


por lo que tu código en este bloque es erróneo por dos cosas. La primera le das salida al código html que generas dinámicamente y lo envias al navegador, por lo que él interpreta que lo que debe mostrar es precisamente una página web...


echo $cont;
....


y luego envias la salida del pdf, la que es ignorada por el navegador pues le enviaste primero un bloque html con el echo...



$dompdf = new DOMPDF();
$dompdf->load_html($cont);
//$dompdf->set_paper('letter','landscape');
$dompdf->set_paper("letter", $orientation = "landscape");
$dompdf->render();
$dompdf->stream("reporte.pdf");//cambiar nombre por el que se genera con la fecha






debes corregir el bloque de código para ajustarte al ejemplo que enlazaste
  • 0

#5 gabyokal

gabyokal

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 12 octubre 2012 - 08:59

ok, lo agregaré, a ver qué pasa, lo más raro es que si pruebo con esto sí sale:

$html= ' 
      hola
';

$cont2 ='
        <!doctype html>
        <html>
        <head>
            <link rel="stylesheet" href="'.$style.'" type="text/css" />
        </head>
        <body>'
            .$html.
        '</body>
        </html>';

 

pero cuando el $html lo cambio simplemente por una tabla así:

 $html= ' 
      <table>
      <th scope="col">Columna 1</th>
      <tr> <td> hola </td></tr>
      </table>
';


ya no sale!! :( ..

Igual agregaré lo que me dices :D .. gracias
  • 0

#6 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 12 octubre 2012 - 09:01

y que te muestra el navegador cuando le das salida a ese bloque de código
  • 0

#7 gabyokal

gabyokal

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 12 octubre 2012 - 09:04

No lo muestra en el navegador, en realidad lo unico que quiero es que se descargue el PDF con la información, pero cuando agregó tablas concatenadas no las respeta o algo así, no sé qué pasa :(
  • 0

#8 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 12 octubre 2012 - 09:06

no te presiones.. vamos por pasos.. podrías pegar aquí un bloque de lo que te aparece en el navegador cuando invocas el script? esto para poder darme una idea de la posible solución...
  • 0

#9 gabyokal

gabyokal

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 18 octubre 2012 - 02:43

HOLA!! les cuento que al final mi codigo quedó así ..

public function sendAsPdf($filename) {
       
require_once("dompdf/dompdf_config.inc.php");
$table = "";
$table.= '<table border = 1>';

foreach ($this->getAll() as $row) {
    $table.='<tr>';
    foreach ($row as $v) {
        $table.='<td>';
          $table.=$v;
        $table.='</td>';
        }
  $table.='</tr>';
}
$table.= '</table>';
$style='/css/main.css';
$cont2 ='
        <!doctype html>
        <html>
        <head>
            <link rel="stylesheet" href="'.$style.'" type="text/css" />
        </head>
        <body>
        <center>
          <h1> Monthly MED Active Report</h1>   
        </center>
            '
            .$table.
        '</body>
        </html>';

        $dompdf = new DOMPDF();
        $dompdf->load_html(utf8_encode($cont2));
        ini_set("memory_limit","-1");

        $dompdf->set_paper("letter", $orientation = "landscape");
        $dompdf->render();
        $dompdf->stream($filename);
       
    }



por lo que veo es muy sensible y debes de escribir y cerrar todo muuuy bien .. ahora solo estoy peleando con los <th> de la tabla pero supongo que debe ser algo que no pongo bien ... lo bueno es que ya lo crea bien :D ..

gracias por la ayuda!!
  • 0

#10 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 18 octubre 2012 - 03:50

Gracias a ti por compartirnos la solución.

Saludox
  • 0




IP.Board spam blocked by CleanTalk.