24

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

4

6 回答 6

31

在使用 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;
}

希望能帮助到你!

于 2013-02-20T04:50:30.737 回答
16

您可以使用{nbpg},例如

<div align="center"><b>{PAGENO} / {nbpg}</b></div>
于 2013-10-21T13:29:11.107 回答
9

如果您尝试返回页数,以便可以将其保存到数据库或 mpdf 之外的其他操作,则很容易以这种方式提取它。

编写内容后:

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

$mpdf->Output();
于 2014-02-28T16:01:40.267 回答
6

将此添加到主 mPDF 类:

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

然后添加一个 html-parser 这样的字符串:

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

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

于 2012-04-26T06:39:21.733 回答
4
  • 总数的替换别名{nb}{nbpg}
  • {PAGENO}表示当前页码

更新

请注意,这个答案是指 mdf library 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();
?>
于 2014-06-24T08:02:45.763 回答
0

注意线路:

preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$hd);

在 mpdf.php 函数 Footer() 中可能会导致你的“{PAGENO} / {nb}”不显示。只需将其注释掉或用于strpos('{DATE' > -1)检查它是否可用。此外,您可能需要添加:

$mpdf->ignore_invalid_utf8 = true;

如果你不想要页脚行:

$mpdf->defaultfooterline = false;

在这些更改之后,分页终于为我工作了。

于 2016-04-06T10:16:42.630 回答