あなたのループは正常に動作しています。PDF にページを追加する方法が間違っている可能性があります。どうやら、新しいページを添付する代わりに、1 つのページを何度も上書きしているようです。
編集
私は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
、それはヒアドキュメントです。エイリアンのインラインコードがたくさんある場合は、ヒアドキュメントを使用する方が快適です。これには変数を含めることができ、{$varname}
引用符について心配する必要はありません。確認する必要があるのは、ヒアドキュメントHTML
のクローザーが新しい行にあり、インデントされていないことだけです。
EDIT2
どのライブラリを使用しているのか、まだよくわかりません。あなたが質問で言ったように、この拡張機能はかなり見栄えがよく、dompdfと呼ばれています。
あなたの最新のコメントは、これまでのところ問題を解決していないことを示しているため、目標を達成するためにさらに情報を追加することにしました。
免責事項: 私は機能的なコードを書くつもりはなく、これをテストするつもりもありませんが、次のヒントは、作業を完了するための正しい方向にあなたを後押しします.
dompdf は、入力ドキュメントの CSS2 および CSS3 プロパティを読み取ることができます。
上記のループの各サイクルは、while
1 人の教師を表し、それぞれの教師が出力ドキュメントで独自のページを取得します。
クラスを使用してページを div コンテナーに入れましたteacherPage
。このコンテナに、教師用に表示したいすべての情報を入力できます。
あとは、 dompdf にそれぞれteacherPage
が新しいページであることを伝えるだけです。これは、CSS3 に同梱さ@page
れているマークアップを使用して行うことができます
上記のサンプル ドキュメントに空の css コンテナーを追加しました<style type="text/css"></style>
。ページのスタイル設定はそこに移動する必要があります。
サンプルCSS
@page teacher {
size: A4 portrait;
margin: 2cm;
}
.teacherPage {
page: teacher;
page-break-after: always;
}
を使用すると、ページ コンテナー全体に有効なプロパティを持つ@page
名前付きの page を定義できます。teacher
page-break-after: always
各コンテナの後に新しいページを開始します
これが役立つことを願って、楽しんでみてください:)