你的循環工作正常。您將頁面添加到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
是在一個新的行,而不是縮進。
EDIT2
仍然不太清楚,你所使用的庫。我發現this extension看起來不錯,它被稱爲dompdf,就像你在你的問題中所說的那樣。
您的最新評論表明您迄今尚未解決您的問題,因此我決定添加更多信息以幫助您達到目標。
免責聲明:我不打算寫功能代碼,我將對此進行測試,但下面的提示將你推到正確的方向,讓您的東西做。
dompdf能夠讀取輸入文檔的CSS2和CSS3屬性。
上面的while
循環中的每個循環代表一個教師,他們每個人都在輸出文檔中獲取自己的頁面。
我把頁面放入類容器teacherPage
的div容器中。你可以在這個容器中填入你想要顯示給老師的所有信息。
現在我們所需要做的就是告訴dompdf每個teacherPage
是一個新頁面。這可以使用@page
markup shipped with 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
將每個容器後,開始了新的一頁
希望這有助於,有有趣的嘗試:)
我建議不要使用mysql_ *功能進行數據庫訪問。它們很舊,支持得不好,並且在所有名稱中都被棄用了(並且從PHP 5.5開始會被棄用)。我建議改用更現代的系統,比如mysqli或PDO。 – GordonM
聽起來像這是不是多維數組或循環的問題,但具有適當的'$ dompdf'用法。 –