Twoja pętla działa dobrze. Sposób dodawania stron do pliku PDF jest prawdopodobnie niewłaściwy. Najwyraźniej ciągle nadpisujesz jedną stronę zamiast dołączać nową.
EDYTUJ
Nigdy nie korzystałem z dompdf. Szybkie spojrzenie na dokumenty pozwala mi pomyśleć, że tworzysz coś w rodzaju znacznika HTML, który następnie jest konwertowany na plik PDF, czy dobrze zrozumiałem?
Przykładowy kod
$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");
Jeśli zastanawiasz się nad niezwykłą składnią $var = <<<HTML \r\nHTML , to jest heredoc . Po prostu wygodniej jest używać dokumentów heredocs, gdy masz dużo obcego kodu wbudowanego, który może mieć zmienne {$varname} i nie musisz się martwić o cytaty. Wszystko, czego musisz się upewnić, to to, że heredoc bliżej HTML jest w nowej linii i nie ma wcięcia.
EDYTUJ2
Nadal nie jestem pewien, której biblioteki używasz. Znalazłem to rozszerzenie wygląda całkiem nieźle i nazywa się dompdf, tak jak powiedziałeś w swoim pytaniu.
Twój ostatni komentarz wskazuje, że do tej pory nie rozwiązałeś swojego problemu, więc postanowiłem dodać więcej informacji, aby dotrzeć do celu.
dompdf może odczytać właściwości CSS2 i CSS3 dokumentu wejściowego.
Każdy cykl w while pętla powyżej reprezentuje jednego nauczyciela, z którego każdy otrzymuje własną stronę w dokumencie wyjściowym.
Umieściłem stronę w kontenerze div z klasą teacherPage . Możesz wypełnić ten pojemnik wszystkimi informacjami, które chcesz wyświetlić dla nauczyciela.
Teraz wszystko, co musimy zrobić, to poinformować dompdf o każdej teacherPage to nowa strona. Można to zrobić za pomocą @page znacznik dostarczony z CSS3
Dodałem pusty kontener css <style type="text/css"></style> do przykładowego dokumentu powyżej, to właśnie tam powinna iść stylizacja strony.
Przykładowy CSS
@page teacher {
size: A4 portrait;
margin: 2cm;
}
.teacherPage {
page: teacher;
page-break-after: always;
}
Z @page możesz zdefiniować nazwaną stronę teacher , które mogą mieć właściwości ważne dla całego kontenera strony.
page-break-after: always rozpocznie nową stronę po każdym kontenerze
Mam nadzieję, że to pomoże, baw się dobrze :)