ループは正常に機能しています。 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
に近づけることだけです。 改行されており、インデントされていません。
編集2
どのライブラリを使用しているかはまだわかりません。 この拡張機能 が見つかりました 見た目はかなり良く、質問で言ったように、それはdompdfと呼ばれています。
あなたの最新のコメントはあなたが今のところあなたの問題を解決しなかったことを示しているので、私はあなたを目標に導くためにいくつかの情報を追加することにしました。
dompdfは、入力ドキュメントのCSS2およびCSS3プロパティを読み取ることができます。
while
の各サイクル 上記のループは、それぞれが出力ドキュメントで独自のページを取得している1人の教師を表しています。
ページをクラスteacherPage
のdivコンテナに入れました 。このコンテナに、教師に表示したいすべての情報を入力できます。
今、私たちがする必要があるのは、dompdfに各teacherPage
を伝えることだけです。 新しいページです。これは、@page
を使用して実行できます マークアップ
空の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
各コンテナの後に新しいページが始まります
これがお役に立てば幸いです。楽しんでください:)