Вашият цикъл работи добре. Начинът, по който добавяте страници към вашия PDF файл, вероятно е грешен. Очевидно презаписвате една страница отново и отново, вместо да прикачвате нова.
РЕДАКТИРАНЕ
Никога не съм използвал dompdf. Бърз поглед в документите ми позволи да си помисля, че създавате нещо като HTML маркиране, което след това се преобразува в PDF, правилно ли разбрах?
Примерен код
$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");
Ако се чудите за необичайния синтаксис $var = <<<HTML \r\nHTML
, това е heredoc . Просто е по-удобно да използвате heredocs, когато имате много извънземен вграден код, това може да има променливи {$varname}
и не е нужно да се притеснявате за цитати. Всичко, което трябва да се уверите, е, че heredoc по-близо HTML
е на нов ред и без отстъп.
РЕДАКТИРАНЕ2
Все още не съм много сигурен коя библиотека използвате. Намирам това разширение изглежда доста добре и се нарича dompdf, точно както казахте във вашия въпрос.
Последният ви коментар показва, че не сте решили проблема си досега, затова реших да добавя още информация, за да ви отведе до целта.
dompdf може да чете свойствата на CSS2 и CSS3 на вашия входен документ.
Всеки цикъл в while
цикълът по-горе представлява един учител, като всеки от тях получава собствена страница в изходния документ.
Поставих страницата в div контейнер с класа teacherPage
. Можете да попълните този контейнер с цялата информация, която искате да се показва за учител.
Сега всичко, което трябва да направим, е да кажем на dompdf всяка teacherPage
е нова страница. Това може да стане с помощта на @page
маркировка доставена с CSS3
Добавих празен css контейнер <style type="text/css"></style>
към примерния документ по-горе, това е мястото, където трябва да отиде стилът на страницата.
Примерният CSS
@page teacher {
size: A4 portrait;
margin: 2cm;
}
.teacherPage {
page: teacher;
page-break-after: always;
}
С @page
можете да дефинирате наименувана страница teacher
, който може да има свойства, валидни за целия контейнер на страницата.
page-break-after: always
ще започне нова страница след всеки контейнер
Надявам се това да помогне, забавлявайте се да опитвате :)