spipu / html2pdf

OFFICIAL PROJECT | HTML to PDF converter written in PHP
http://html2pdf.fr/en/default
Open Software License 3.0
1.67k stars 745 forks source link

problemas con bucles while a la hora de formatear el PDF #465

Open Kaeus77 opened 5 years ago

Kaeus77 commented 5 years ago

Buenas

Tengo un problema a la hora de convertir a pdf un informe HTML

Quiero sacar un informe de operaciones sde unas instalaciones, por lo que primero recorro la tabla de instalaciones y luego la de operaciones, queriendo sacar:

instalacion 1 detalle 1 detalle 2 detalle 3 ... ------salto de pagina------- instalacion 2 detalle 1 detalle 2 detalle 3 ... ------salto de pagina------- instalacion 3 detalle 1 detalle 2 detalle 3 ... ------salto de pagina------- ....

Tengo el siguiente codigo:

<?php

require_once dirname(FILE).'/vendor/autoload.php'; use Spipu\Html2Pdf\Html2Pdf; use Spipu\Html2Pdf\Exception\Html2PdfException; use Spipu\Html2Pdf\Exception\ExceptionFormatter;

if(!isset($_SESSION)) { session_start(); }

$content = ob_get_clean();

$sql="sentencia sql 1º bucle"; $instalaciones = $con->query($sql); while ($row = $instalaciones->fetch_array(MYSQLI_ASSOC)) { $content='

';
$content .=""; $content .='
campos cabecera
';

$content .='<table>';
$content .='<tr><td>encabezado filas</td></tr>';

$sqloperaciones="sentencia sql 2º bucle";
$operaciones = $con->query($sqloperaciones); 
while ($rowoperaciones = $operaciones->fetch_array(MYSQLI_ASSOC)) 
{
    $content .='<tr><td>detalle</td></tr>';
}
$content .='</table>';
//echo $content;

}

try { ob_start(); include dirname(FILE).'/res/prueba.php';
$html2pdf = new Html2Pdf('L', 'A4', 'fr'); $html2pdf->writeHTML($content); $html2pdf->output('pruebas.pdf'); } catch (Html2PdfException $e) { $html2pdf->clean(); $formatter = new ExceptionFormatter($e); echo $formatter->getHtmlMessage(); } ?>

Tengo varios problemas:

1º.- si hago un echo de $content y comento las lineas de exportación, funciona perfectamente, se ve todo correctamente, pero si quito los comentarios y ejecuto, no se porque solo me sale la última Instalación y sus operaciones...en el ejemplo que he puesto arriba...sale en PDF solo la Instalación 3 y sus operaciones...no salen ni la 1 ni la 2.

2º.- quiero hacer un salto de página entre instalación e instalación, para que cada instalación comience en una nueva página...no se como realizarlo

¿Alguien me puede echar un cable?

Kaeus77 commented 5 years ago

no se ha pegado bien el codigo...lo adjunto aqui informe.docx

somera1024 commented 5 years ago

The error you have has nothing to do with this library. You will always get the last installation because in the first while you set the variable $content To work properly you should set the variable content before the first while $content = ''; And then inside the while always make $ content. = 'Example'; $content = ''; while ($row = $instalaciones->fetch_array(MYSQLI_ASSOC)) { $content .= 'Example'; To make several sheets you would have what you want on each sheet between the page tag. Example sheet 1 </ page> sheet 2 </ page>