Mysql
 sql >> Database >  >> RDS >> Mysql

Come creare più pagine con dompdf

Il tuo ciclo funziona bene. Il modo in cui aggiungi le pagine al tuo PDF è probabilmente sbagliato. Apparentemente stai sovrascrivendo una pagina ancora e ancora invece di allegarne una nuova.

MODIFICA

Non ho mai usato dompdf. Una rapida occhiata ai documenti mi ha fatto pensare che tu crei qualcosa come un markup HTML che poi viene convertito in PDF, ho capito bene?

Codice di esempio

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

Se ti chiedi la sintassi insolita $var = <<<HTML \r\nHTML , è un quiredoc . È solo più comodo usare heredocs quando hai molto codice inline alieno, questo può avere variabili {$varname} e non devi preoccuparti delle citazioni. Tutto ciò di cui hai bisogno per assicurarti è che heredoc più vicino a HTML è in una nuova riga e non rientrata.

EDIT2

Non sono ancora troppo sicuro di quale libreria stai utilizzando. Trovo questa estensione sembra abbastanza buono e si chiama dompdf, proprio come hai detto nella tua domanda.

Il tuo ultimo commento indica che finora non hai risolto il tuo problema, quindi ho deciso di aggiungere qualche informazione in più per portarti all'obiettivo.

dompdf è in grado di leggere le proprietà CSS2 e CSS3 del tuo documento di input.

Ogni ciclo nel while il ciclo sopra rappresenta un insegnante con ognuno di loro che ottiene una propria pagina nel documento di output.

Ho inserito la pagina in un contenitore div con la classe teacherPage . Puoi riempire questo contenitore con tutte le informazioni che desideri vengano visualizzate per un insegnante.

Ora tutto ciò che dobbiamo fare è dire a dompdf ogni teacherPage è una nuova pagina Questo può essere fatto usando @page markup spedito con CSS3

Ho aggiunto un contenitore CSS vuoto <style type="text/css"></style> al documento di esempio sopra, ecco dove dovrebbe andare lo stile della pagina.

L'esempio CSS

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

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

Con @page puoi definire una pagina con nome teacher , che può avere proprietà valide per l'intero contenitore della pagina.

page-break-after: always inizierà una nuova pagina dopo ogni contenitore

Spero che questo ti aiuti, divertiti a provare :)