Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erstellen Sie mehrere Seiten mit dompdf

Deine Schleife funktioniert einwandfrei. Die Art und Weise, wie Sie Seiten zu Ihrem PDF hinzufügen, ist wahrscheinlich falsch. Anscheinend überschreibst du immer wieder eine Seite, anstatt eine neue anzuhängen.

BEARBEITEN

Ich habe noch nie dompdf verwendet. Ein kurzer Blick in die Dokumentation lässt mich denken, dass Sie so etwas wie ein HTML-Markup erstellen, das dann in PDF konvertiert wird, habe ich das richtig verstanden?

Beispielcode

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

Falls Sie sich über die ungewöhnliche Syntax $var = <<<HTML \r\nHTML wundern , das ist ein Heredoc . Es ist einfach bequemer, Heredocs zu verwenden, wenn Sie viel fremden Inline-Code haben, dieser kann Variablen {$varname} haben und Sie müssen sich keine Gedanken über Angebote machen. Alles, was Sie sicherstellen müssen, ist dieses HTML-Dokument steht in einer neuen Zeile und ist nicht eingerückt.

BEARBEITEN2

Immer noch nicht ganz sicher, welche Bibliothek Sie verwenden. Ich finde diese Erweiterung sieht ziemlich gut aus und heißt dompdf, genau wie Sie in Ihrer Frage sagten.

Ihr letzter Kommentar weist darauf hin, dass Sie Ihr Problem bisher nicht gelöst haben, daher habe ich beschlossen, einige weitere Informationen hinzuzufügen, um Sie zum Ziel zu bringen.

dompdf kann CSS2- und CSS3-Eigenschaften Ihres Eingabedokuments lesen.

Jeder Zyklus im while Die obige Schleife stellt einen Lehrer dar, von dem jeder eine eigene Seite im Ausgabedokument erhält.

Ich habe die Seite in einen div-Container mit der Klasse teacherPage gelegt . Sie können diesen Container mit allen Informationen füllen, die Sie für einen Lehrer angezeigt haben möchten.

Jetzt müssen wir nur noch dompdf jede teacherPage mitteilen ist eine neue Seite. Dies kann mit @page erfolgen Markup wird mit CSS3 ausgeliefert

Ich habe einen leeren CSS-Container <style type="text/css"></style> hinzugefügt zum Beispieldokument oben, dort sollte das Seitendesign hingehen.

Das Beispiel-CSS

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

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

Mit @page Sie können eine benannte Seite teacher definieren , die Eigenschaften haben kann, die für den gesamten Seitencontainer gültig sind.

page-break-after: always beginnt nach jedem Container eine neue Seite

Hoffe das hilft, viel Spaß beim ausprobieren :)