【问题标题】:TCPDF Page number as intTCPDF 页码为 int
【发布时间】:2018-02-16 22:15:30
【问题描述】:

$pdf->getAliasNumPage() 获取内容中的页码作为字符串,这不起作用。因为我试图确定下一个页码。所以理论上$pdf->getAliasNumPage() + 1;

我尝试使用$pdf->PageNo();,但它总是返回 1。如果我将它添加到页脚 $thisPageNo() 工作正常,但在内容中。没有。

我正在使用$content .= lines;

$pdf->writeHTML($content, true, 0, true, 0);

用于输出。

【问题讨论】:

    标签: php tcpdf


    【解决方案1】:

    查看documentationgetAliasNumPage() 只不过是占位符文本,它最终告诉 TCPDF 编译器显示当前页码。此功能只能用于显示 PDF 中的当前页码,不能用于添加等逻辑。

    试试看:

    echo $pdf->getAliasNumPage();
    die();
    

    至于PageNo(),文档确实说它返回一个整数,但是这个整数只有在您不使用writeHTML() 创建 PDF 时才会更新。这个整数只有在你自己调用AddPage() 方法后才会增加。

    这样做的原因是,当您构建 HTML 时,PageNo() 会立即执行,并且始终位于第 1 页。 writeHTML() 函数不知道您正在尝试使用 PageNo() 作为表达式,因为整数已经存在于 $content 中。

    由于$content 将呈现为可变高度的内容块,因此TCPDF 会根据需要不断地将其溢出到新页面上,PageNo() 生成的整数将始终相同。

    为了让 TCPDF 按照您尝试使用它的方式工作,TCPDF 必须提供编译器能够理解和评估的表达式占位符。


    至于页脚,PageNo() 有效,因为页脚函数是根据需要调用的。

    来自文档:

    页脚( )

    此方法用于呈现页脚。 它由 AddPage() 自动调用,并且可以在您自己继承的类中被覆盖。

    粗体部分解释了为什么PageNo() 实际上会在页脚中按预期递增。 Header() 也是如此。

    【讨论】:

    • @JeyTom 我了解,但鉴于 TCPDF 的工作原理,您不能能够根据页码动态更改 $content。不过,您可以更改页眉或页脚的内容。如果您想根据页码更改正文内容,那么您需要学习如何在没有 HTML 代码的情况下使用 TCPDF。
    • 好的,明白了,非常感谢,您认为还有其他方法可以确定计数吗?到 $var?因为 die() 方法无论如何都会杀死我的脚本。所以它不是很理想。我正在使用它,所以如果同一张表继续进入下一页,请在顶部添加更多带有名称的行,这样当 somoene 打印它时,它会更容易阅读。
    • @JeyTom 你为什么打电话给die();??我的示例只是 TCPDF 内部行为的概念证明,因此它不应该出现在您的代码中。我认为您应该充分阅读我的答案几次,因为您似乎仍然认为可以在 PDF 正文中使用带有 PageNo() 的表达式。简短的回答,这是不可能的。
    • 只是指出,是的,我得到了那部分,好吧,我看到有些人使用页面高度来确定高度是否超出 1 个页面范围,我会尝试这种方法。总之非常感谢。我得到了我的答案。 :)
    • @JeyTom 创建 PDF 绝非易事。无论如何,您可以设置一个全局标志,例如$table_name = 'whatever';,并在标头函数中使用if( $GLOBALS[ 'table_name' ] === 'whatever' ){ /* do this header*/ }elseif( ...。在您的$content 构建过程中,只需根据需要重新分配$table_name,标题功能将始终根据需要进行处理。
    猜你喜欢
    • 2015-01-10
    • 1970-01-01
    • 2017-09-06
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2015-06-29
    • 1970-01-01
    相关资源
    最近更新 更多