PDFドキュメントがmPDFライブラリを使用している場合、生成されたページ数を取得する方法を知っている人はいますか?
6 に答える
私は EYiiPdf (Yii 上の mPDF のラッパー) を使用しているときに同じ機能を探していましたが、以下は魅力的でした:
$mPDF->setFooter('{PAGENO} / {nb}');
mPDF のソースを確認したところ、mpdf.php:1656 (バージョン 5.4) でこれを見つけました。
function AliasNbPages($alias='{nb}') {
//Define an alias for total number of pages
$this->aliasNbPg=$alias;
}
それが役に立てば幸い!
次のように{nbpg}を使用できます
<div align="center"><b>{PAGENO} / {nbpg}</b></div>
これをメインの mPDF クラスに追加します。
function getPageCount() {
return count($this->pages);
}
次に、次のような文字列の html パーサーを追加します。
$html = str_replace('{PAGECNT}', $this->getPageCount(), $html);
これらのアクションの後、解析された HTML に直接 {PAGECNT} を挿入して結果を得ることができます。これは、ページを示す必要がある場合に便利です。
- 総数の代替エイリアス{nb}および{nbpg}
- 現在のページ番号の{PAGENO}
アップデート
この回答は、執筆時点での最新バージョンである mdf ライブラリ v4 を参照していることに注意してください。
@aiaoによる最小限の作業例
<?php
$pagenumber= '<!--mpdf Page {PAGENO} of {nbpg}mpdf--> $mpdf->WriteHTML($pagenumber);
$mpdf->Output();
?>
<?php
$pagenumber= '<!--mpdf Page {PAGENO} of {nbpg}mpdf--> $mpdf->WriteHTML($pagenumber);
$mpdf->Output();
?>
次の行に注意してください。
preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$hd);
mpdf.php 関数の Footer() で "{PAGENO} / {nb}" が表示されない場合があります。コメントアウトするか、利用strpos('{DATE' > -1)
可能かどうかを確認するために使用してください。また、次を追加する必要がある場合があります。
$mpdf->ignore_invalid_utf8 = true;
また、フッター行が必要ない場合:
$mpdf->defaultfooterline = false;
これらの変更の後、ページネーションがついに機能しました。