質問: wkhtmltopdf と phpwkhtmltopdf で PDF 出力機能を作りました。出力する html ページは非常に長く、だいたい 6~7ページ 程度になります。 そのため、区切りの悪い箇所で改ページとなってしまうので、任意の場所で改ページをしようとしたところ、掲題の通り、空白ページが出来上がってしまいます。 ``` $pdf->addPage($html1); $pdf->addPage($html2); $pdf->addPage($html3); $pdf->addPage($html4); $pdf->addPage($html5); ``` 上記のような書き方をすると、5ページ出力されるのですが、3~5ページ目は何も表示されない状態になります。ただし、常にそれが起きるわけではなく、たまに正常に表示されたりもあります。 htmlはbootstrapを使っており、bootstrapを拡張した AdminLTE というCSSを使っています。 この AdminLTE をコメントアウトした場合は出力されるということがわかりましたが、なぜAdminLTEがないことで出力されるのかはわかっていません。 また、AdminLTE は全てのhtmlについているため、3ページ目以降だけ「外さないと表示されない」というのにも混乱しています。(1~2ページ目は表示される) ※ AdminLTEがなくなると、デザインがおかしくなってしまうため、外すことは難しいです。 PHPバージョンは 5.4、フレームワークは FuelPHP1.8 です。 その他不明点ありましたらご連絡ください。よろしくお願いします。 [参考] * PHPでPDFを作成するときはphpwkhtmltopdfで戦え [2016年度版]
回答: 「たまに正常に表示されたり」というような状況を考えると、JavaScriptで動くウィジェットを入れていたような場合には「JavaScriptの処理が間に合っていない」可能性もあります。 `new Pdf(['javascript-delay' => 1000]);`のようにすることで、JavaScriptの実行を待つ時間を制御できます(ミリ秒単位で、デフォルトは200ミリ秒)。