sql >> Databasteknik >  >> RDS >> Mysql

Hur man skapar flera sidor med dompdf

Din slinga fungerar bra. Sättet du lägger till sidor i din PDF är förmodligen fel. Tydligen skriver du över en sida om och om igen istället för att bifoga en ny.

REDIGERA

Jag har aldrig använt dompdf. En snabb titt i dokumenten låter mig tro att du skapar något som en HTML-uppmärkning som sedan konverteras till PDF, fattade jag detta rätt?

Exempelkod

$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");

Om du undrar över den ovanliga syntaxen $var = <<<HTML \r\nHTML , det är en heredoc . Det är bara bekvämare att använda heredocs när du har mycket främmande inline-kod, detta kan ha variabler {$varname} och du behöver inte oroa dig för offerter. Allt du behöver för att se till är att heredoc närmare HTML är på en ny rad och inte indragen.

EDIT2

Fortfarande inte så säker på vilket bibliotek du använder. Jag hittar det här tillägget ser ganska bra ut och heter dompdf, precis som du sa i din fråga.

Din senaste kommentar visar att du inte har löst ditt problem hittills, så jag bestämde mig för att lägga till lite mer information för att få dig till målet.

dompdf kan läsa CSS2- och CSS3-egenskaper för ditt inmatningsdokument.

Varje cykel under while loopen ovan representerar en lärare som var och en av dem får en egen sida i utdatadokumentet.

Jag lägger in sidan i en div-behållare med klassen teacherPage . Du kan fylla den här behållaren med all information du vill ska visas för en lärare.

Nu behöver vi bara berätta för dompdf för varje teacherPage är en ny sida. Detta kan göras med @page uppmärkning levereras med CSS3

Jag lade till en tom css-behållare <style type="text/css"></style> till exempeldokumentet ovan, det är dit sidstilen ska gå till.

Exemplet på CSS

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

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

Med @page du kan definiera en namngiven sida teacher , som kan ha egenskaper som är giltiga för hela sidbehållaren.

page-break-after: always kommer att börja en ny sida efter varje behållare

Hoppas detta hjälper, ha kul att prova :)



  1. hur man ställer in längden på en kolumn i viloläge med maximal längd

  2. pgmemcache Installation och användning

  3. Kan du lösa denna enkla SQL-fråga?

  4. Hur tar man bort radavstånd mellan rader i Textarea?