如何在 mPDF 文档中获取页数


How to get a page count in an mPDF document?

有人知道如何获取使用mPDF库的PDF文档生成的页面数吗?

我在使用 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 之外的其他操作中,则很容易以这种方式拉取它。

编写内容后:

$mpdf->WriteHTML($html);
$page_count = $mpdf -> page;
$mpdf->Output();

将其添加到主 mPDF 类中:

function getPageCount() {
    return count($this->pages);
}

然后添加一个HTML解析器这样的字符串:

$html = str_replace('{PAGECNT}', $this->getPageCount(), $html);

完成这些操作后,您可以直接在解析的 HTML 中插入 {PAGECNT} 以获得结果。这很有用,因为您需要指示一个页面:

  • 替换别名 {nb} 和 {nbpg} 表示总数
  • {页} 表示当前页码

更新

请注意,此答案指的是 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;

经过这些更改,分页终于对我有用了。