【问题标题】:How to get a page count in an mPDF document?如何获取 mPDF 文档中的页数?
【发布时间】:2012-05-04 01:37:22
【问题描述】:

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

【问题讨论】:

  • 将此添加到主 mPDF 类: function getPageCount() { return count($this->pages);然后添加一个 html-parser 这样的字符串: $html = str_replace('{PAGECNT}', $this->getPageCount(), $html);在这些操作之后,您可以直接在解析的 HTML 中插入 {PAGECNT} 以获得结果。如果您需要指明一个页面,这很有用,例如:“page 2 of 5”。

标签: php mpdf


【解决方案1】:

将此添加到主 mPDF 类中:

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

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

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

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

【讨论】:

  • 这对我有用,但只显示在最后一页,是否可以显示在每一页的页脚中?
  • 告诉please哪里需要插入解析html?在什么功能上?
  • @VincePettit ..如何在 mpdf 中创建基于 html 的索引
【解决方案2】:

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

希望对你有帮助!

【讨论】:

  • 实际接受的答案对我有用!!你的解决方案成功了:)
  • 我正在使用 mpdf(在 Yii 内部)创建 pdf,pdf 是从 html 创建的,我使用 setfooter 到页脚的东西,但它只显示在最后一页!如何在每个页面中获得它? $mPDF1->setFooter('{DATE j-m-Y}|{PAGENO}/{nb}','O|E');
【解决方案3】:

你可以使用{nbpg},比如

<div align="center"><b>{PAGENO} / {nbpg}</b></div>

【讨论】:

  • 这是一个非常有用的答案。如果您使用resetpagenum{nbpg} 显示从您上次重置开始计数的当前页码。如果要显示总页数,可以使用{nb}
【解决方案4】:

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

写完内容后:

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

$mpdf->Output();

【讨论】:

  • 我一直在为 AGES 寻找这个,看了几个小时的文档,终于找到了答案。非常感谢!
  • 在其他任何地方都找不到这个!谢谢!
【解决方案5】:
  • 替换别名 {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();
?>

【讨论】:

  • 请解释应该如何使用它。他们如何将页数返回给应用程序?
  • 即使我可以回答您的问题,OP 的问题与将页数返回到应用程序无关。这些是替换别名,它们被放入您的 html 模板并由 mdf 类实例解析。这是library v4的答案,如果我没记错的话,请看年份。该库的文档丢失(可能仍然存在),因此很难立即找到正确的占位符名称。
  • 请附上 MWE(最小工作示例)。你不必测试它,虽然它会很好......实例化一个对象,使用参数 ..etc $mpdf->WriteHTML($pagenumber); $mpdf->输出();?>
  • @aiao 实际上,请随时编辑我的答案。我写了这个答案,因为我不得不花一些时间自己找到那些占位符(事实上我从一开始就不知道它们存在)。恕我直言,如果 OP 提出这个问题,他非常清楚如何初始化库并从 html 创建一个基本的 pdf。我使用的最后一个版本是 6,现在可能有更新的版本。我认为我们不应该花太多时间来改进这个答案。
【解决方案6】:

注意线路:

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

在 mpdf.php 函数 Footer() 中 这可能会导致您的“{PAGENO} / {nb}”不显示。 只需将其注释掉或使用strpos('{DATE' &gt; -1) 来检查它是否可用。 您可能还需要添加:

$mpdf-&gt;ignore_invalid_utf8 = true;

如果你不想要页脚行:

$mpdf->defaultfooterline = false;

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

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多