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 :)