PDF 页面中的页眉在 PHP 中使用 DOMPDF

2022-08-30 11:28:52

我正在使用DOMPDF创建一个PDF文件。我有一个很大的内容要在PDF中提取,我们需要在所有页面中都有一些标题。因此,任何人都可以了解如何在PDF中添加页眉和页脚,以便页眉将使用DOMPDF显示在所有页面中。


答案 1

在0.6.0代码中,您将能够使用HTML + CSS生成页眉和页脚。与使用内联PHP相比,有一些限制(例如,还没有PAGE_COUNT占位符),因此这是否可行取决于您的需求。

下面的代码将生成一个包含页眉和页脚的两页文档

<html>
<head>
  <style>
    @page { margin: 180px 50px; }
    #header { position: fixed; left: 0px; top: -180px; right: 0px; height: 150px; background-color: orange; text-align: center; }
    #footer { position: fixed; left: 0px; bottom: -180px; right: 0px; height: 150px; background-color: lightblue; }
    #footer .page:after { content: counter(page, upper-roman); }
  </style>
<body>
  <div id="header">
    <h1>Widgets Express</h1>
  </div>
  <div id="footer">
    <p class="page">Page </p>
  </div>
  <div id="content">
    <p>the first page</p>
    <p style="page-break-before: always;">the second page</p>
  </div>
</body>
</html>

如果需要访问某些缺少的功能,也可以使用这两种样式的组合。使用该方法添加的 PDF 对象和文本呈现在 HTML 内容之上。page_text


答案 2

DOMPDF wiki上有一个FAQ条目:有没有办法添加页眉和页脚或页码?

因此,您可以将以下“内联 PHP”代码段添加到 HTML 输入中(为页脚添加类似的page_text调用):

<script type="text/php">
    if ( isset($pdf) ) {
        $font = Font_Metrics::get_font("helvetica", "bold");
        $pdf->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}",
                        $font, 6, array(0,0,0));
    }
</script>    

如果你想在调用方实现它(直接在PHP代码中),你必须调用DOMPDFS的-method,它返回底层的PDF-Renderer,它允许你调用方法,如上例所示。让我告诉你我的意思:get_canvas()page_text

// your dompdf setup        
$dompdf = new DOMPDF();

$dompdf->load_html($html);
$dompdf->render();

// add the header
$canvas = $dompdf->get_canvas();
$font = Font_Metrics::get_font("helvetica", "bold");

// the same call as in my previous example
$canvas->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}",
                   $font, 6, array(0,0,0));

最终你必须打电话(试试吧)。page_textload_html


推荐