2013-01-17 73 views
0

我正在使用dompdf来生成有时有头版的报告,有时还有一些附件。主要内容有一个页眉和一个页脚,但是首页和附件(pdf的最后3到5页)不应该包含页眉和页脚。我将页眉和页脚与内嵌PHP page_script(),像这样:DOMPDF: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。如果添加了任何附件(其中包含1000px高度的jpg图像,每个图片都在自己的页面上)

有没有人有关于如何识别这些“附件”页面的想法,并获取DOMPDF不呈现标题和页脚在这些页面上?或者有没有什么办法可以在page_script()中检查- 脚本当前页面是否只包含图像(或者可能是具有特定类或标识符的图像)?

感谢您的帮助, 大卫

回答

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

+0

非常感谢!这是我希望的可能之一。由于删除标题会在页面顶部创建更多空白,是否有任何方法可以更改附件页面的顶部边距?目前,页边距由css文件中的body {margin:value;}设置。 – davidanton1d

+0

在这种情况下,我可能会分别渲染每个部分,然后使用pdftk加入它们。页边距可以全局设置或基于@page选择器(第一,左,右)设置。你可能会尝试的是将每个图像封装在打破页面的div中。定位图像绝对,这将给你一些定位的灵活性(你甚至可以消极)。如果你需要一个样本,让我知道。 – BrianS

+0

实际上,我一直试图用PDFmerger(http://pdfmerger.codeplex.com/)将PDF与其他PDF合并到服务器上,但它抱怨xref表错误。你知道这个解决方法吗,或者是另一个适用于DOMPDF的合并? PDFtk看起来像一个很好的桌面软件,但我需要在服务器上自动合并(请纠正我,如果我错了)。 – davidanton1d

相关问题