2011-09-20 40 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

相關問題