2011-09-20 99 views
29

我正在使用DOMPDF创建PDF文件。我有很大的内容需要用PDF格式提取,我们需要在所有页面中添加一些标题。因此,任何人都可以打电话来告诉我们如何在PDF中添加页眉和页脚,以便使用DOMPDF在页面中显示页眉。PHP中使用DOMPDF的PDF页面中的页眉

回答

18

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

所以,你可以在下面的“内联PHP” -snippet添加到您的HTML输入(添加了类似page_text -call为您的页脚):

<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>  

如果你想,而实现这个您caller-side(在PHP代码中直接表示),您必须调用DOMPDFS的get_canvas()-方法,该方法返回底层的PDF-Renderer,它允许您像上例中那样调用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)); 

最终,你必须调用load_htmlpage_text(只是尝试一下)。

+0

感谢vstm ...我试图在标题中打印一些html标签。我也尝试过TCPDF ..但是我无法使用HTML标签,它只支持文本。在我的要求中,我必须创建一个报告,报告标题或列名应显示在所有页面中。我找不到任何在PDF中打印我的HTML标头的东西。如果你知道什么,请帮助我。 – Sandy

+10

你的代码的第二部分是更好的,没有内联脚本的PHP代码。但“//添加标题”部分必须位于“$ dompdf-> render();”之后为了工作。 – machineaddict

+0

这必须是被接受的答案 – Epoc

50

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

下面的代码将产生一个two-page document with a header and footer

<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> 

您还可以使用两种风格的组合,如果你需要访问一些缺失的功能。使用page_text方法添加的PDF对象和文本呈现在HTML内容之上。

+0

嗨,Brian ..加1为您的精彩教程。你让它变得很容易:) –

+1

@BrianS确实dompdf尊重网页计数器?我一直没有能够得到它的工作。这就是我正在谈论的“counter(pages)”的“content:counter(page)”;''' – Pzanno

+0

@Pzanno dompdf目前无法以这种方式显示总页数。访问这些信息的唯一方法是通过内联脚本。 – BrianS

相关问题