【问题标题】:DOMPDF: page_script(): Check current page content?DOMPDF: page_script(): 检查当前页面内容?
【发布时间】:2013-01-17 10:15:58
【问题描述】:

我正在使用 dompdf 生成报告,这些报告有时有首页,有时还有一些附件。主要内容有页眉和页脚,但首页和附件(pdf的最后3至5页)不应包含页眉和页脚。我使用内联 php page_script() 放置页眉和页脚,如下所示:

<script type="text/php"> 
    if (isset($pdf) ) { 
        $pdf->page_script('
            if ( $PAGE_COUNT > 10 && $PAGE_NUM == 1) {
                //front page footer
            }else{
                //other pages' header and footer
            }
        ');
    }
</script>

整个报告由数据库引擎构建,将其全部输出为临时 html.txt 文件,然后将其读入 DOMPDF。

现在,要识别首页,我只需检查页码是否 = 1。如果添加了任何附件(由 1000 像素高的 jpg 图像组成,每个在自己的页面上)

有没有人知道如何识别这些“附件”页面并让 DOMPDF 不在这些页面上呈现页眉和页脚?或者有什么方法可以在 page_script() 脚本中检查当前页面是否仅包含图像(或者可能是具有特定类或标识符的图像)?

感谢您的帮助, 大卫

【问题讨论】:

    标签: header footer dompdf


    【解决方案1】:

    检测当前页面内容可能是可能的,但我必须准确研究您在这个级别上可以做什么。如果您可以在生成的文档中注入一些内联脚本,则更简单的方法是。在主要内容之后和附件之前,您可以添加 $GLOBALS['attachments'] = true; 之类的内容,然后将对该变量状态的检查添加到您的条件中。

    <script type="text/php">
    if (isset($pdf) ) {
      $pdf->page_script('
        if ( $PAGE_COUNT > 10 && $PAGE_NUM == 1) {
          //front page footer
        }elseif ($GLOBALS['attachments']) {
          //attachments actions
        }else{
          //other pages' header and footer
        }
      ');
    }
    </script>
    

    当然,不要忘记在文档顶部将变量初始化为 false。 (来自https://groups.google.com/d/topic/dompdf/mDsYi8Efnhc/discussion)

    【讨论】:

    • 太好了,谢谢!这是我希望的可能性之一。由于删除标题会在页面顶部创建更多空白,有没有办法改变附件页面的上边距?目前,页边距由 css 文件中的 body{margin: value;} 设置。
    • 说实话,在这种情况下,我可能会分别渲染每个部分,然后使用 pdftk 加入它们。页边距可以全局设置或基于@page 选择器(第一、左、右)。您可能会尝试将每个图像包装在一个破坏页面的 div 中。绝对定位图像,这将使您在定位方面具有一定的灵活性(您甚至可以消极)。如果您需要样品,请告诉我。
    • 实际上,我一直在尝试使用 PDFmerger (pdfmerger.codeplex.com) 将 PDF 与服务器上的其他 PDF 合并,但它抱怨外部参照表出现错误。您是否知道任何解决方法,或与 DOMPDF 一起使用的其他合并? PDFtk 看起来像一个不错的桌面软件,但我需要在服务器上自动进行合并(如果我错了,请纠正我)。
    • 我不确定 pdfmerger 有什么问题,我必须进一步调查。我目前使用 pdftk 作为将多个 PDF 合并为一个 PDF 的自动化过程的一部分。只要您可以将其安装在您的服务器上,它就应该可以正常工作。
    • 很遗憾,我们的虚拟主机不支持在我们的服务器上安装任何程序,这意味着我需要一个纯 PHP 解决方案来合并 PDF。完整的错误消息显示为“FPDF 错误:无法找到外部参照表”,当我试图找到导致它发生的原因时,我在 css 中发现了一堆触发器。它在设置某些属性时出现,但当我将它们更改为“someproperty:;”时又消失了。一些属性:font-family、font-style、body 标签上的 margin-right、table 类的 margin-left、另一个类的 padding-right 和 padding-left,等等。这有什么帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多