sql >> Database >  >> RDS >> Mysql

Meerdere pagina's maken met dompdf

Je lus werkt prima. De manier waarop u pagina's aan uw PDF toevoegt, is waarschijnlijk verkeerd. Blijkbaar overschrijft u een pagina keer op keer in plaats van een nieuwe toe te voegen.

BEWERKEN

Ik heb nooit dompdf gebruikt. Een snelle blik in de documenten laat me denken dat je zoiets als een HTML-opmaak hebt gemaakt die vervolgens wordt geconverteerd naar PDF, heb ik dit goed begrepen?

Voorbeeldcode

$html = <<<HTML
  <html>
      <head>
            <style type="text/css">
                /* Your document styling goes here */
            </style>
      </head>
      <body>
HTML;

while ( $row = $dbResult->fetch_assoc() ) {
    $html .= '<div class="teacherPage">'
                 . $row['name'] // your teacher document goes here
             '</div>';
}

$html .= '</body></html>';

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");

Als je je afvraagt ​​over de ongebruikelijke syntaxis $var = <<<HTML \r\nHTML , dat is een heredoc . Het is gewoon handiger om heredocs te gebruiken als je veel buitenaardse inline code hebt, dit kan variabelen hebben {$varname} en u hoeft zich geen zorgen te maken over offertes. Het enige dat u moet controleren, is dat heredoc close HTML staat in een nieuwe regel en niet ingesprongen.

EDIT2

Nog steeds niet zeker welke bibliotheek je gebruikt. Ik vind deze extensie ziet er best goed uit en het heet dompdf, zoals je in je vraag zei.

Je laatste opmerking geeft aan dat je je probleem tot nu toe niet hebt opgelost, dus heb ik besloten wat meer informatie toe te voegen om je bij het doel te krijgen.

dompdf kan CSS2- en CSS3-eigenschappen van uw invoerdocument lezen.

Elke cyclus in de while lus hierboven vertegenwoordigt één leraar, waarbij elk van hen een eigen pagina krijgt in het uitvoerdocument.

Ik heb de pagina in een div-container geplaatst met de klasse teacherPage . Je kunt deze container vullen met alle informatie die je voor een leraar wilt hebben.

Nu hoeven we alleen nog maar dompdf te vertellen aan elke teacherPage is een nieuwe pagina. Dit kan met @page markup verzonden met CSS3

Ik heb een lege css-container toegevoegd <style type="text/css"></style> naar het voorbeelddocument hierboven, daar zou de paginastijl naartoe moeten gaan.

De voorbeeld-CSS

@page teacher {
  size: A4 portrait;
  margin: 2cm;
}

.teacherPage {
   page: teacher;
   page-break-after: always;
}

Met @page je kunt een pagina met een naam definiëren teacher , die eigenschappen kan hebben die geldig zijn voor de hele paginacontainer.

page-break-after: always begint een nieuwe pagina na elke container

Ik hoop dat dit helpt, veel plezier met proberen :)



  1. Hoe de testdatabase van Django alleen in het geheugen uit te voeren?

  2. Hoe sqlparameter doorgeven aan IN()?

  3. Waarschuwing:de stap na de installatie is niet succesvol voltooid, bij het installeren van mysql met brew in Mac OS High Sierra

  4. Linkervulling in SQL Server – 3 LPAD()-equivalenten