2012-10-08 110 views
8

我正在使用Codeigniter,併成功實施了用於生成PDF文件的dompdf。現在我遇到了在生成的PDF中添加頁眉和頁腳的問題。在dompdf中添加帶頁碼的頁眉和頁腳

這裏是我的dompdf_helper代碼:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 
function pdf_create($html, $filename='', $stream=TRUE) 
{ 
require_once("dompdf/dompdf_config.inc.php"); 

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
    $dompdf->set_paper("A4"); 
if ($stream) { 
    $dompdf->stream($filename.".pdf",1); 
} else { 
    return $dompdf->output(); 
} 
} 
?> 

這裏是我的控制器調用生成PDF:

<?php 

$data['store']=$res; 
$this->load->helper(array('dompdf', 'file')); 
$html = $this->load->view('store/sales_pdf', $data, true); 
$html.= $this->load->view('footer'); 
$filename="salesbill".$id; 
pdf_create($html, $filename); 
$data = pdf_create($html, '', false); 
write_file('name', $data); 
?> 

我使用這個腳本用於獲取網頁數目,但它印僅在第二頁會退出,否則不會打印。

<script type="text/php"> 

    if (isset($pdf)) { 

     $font = Font_Metrics::get_font("helvetica", "bold"); 
     $pdf->page_text(500,10, "Page: {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); 

    } 
    </script> 

我想在每一頁打印的公司名稱,聯繫方式和賬單號碼作爲標題,然後在頁腳。我想添加一個頁碼,比如「1的3」。

+1

調試dompdf的第一步是查看您要呈現的HTML文檔,而不是創建文檔的過程。以這種方式識別與dompdf相關的錯誤更容易。那麼,你可以發佈一個展示錯誤的示例文檔嗎?我唯一的問題是,你是否至少有HTML內容的身體標籤?如果沒有,那麼由於文檔處理過程,dompdf將無法訪問該腳本。 – BrianS

回答

21

我希望這會幫助你瞭解如何在dompdf中獲得頁眉和頁腳。檢查此鏈接也.... Example

<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 <?php $PAGE_NUM ?></p> 
    </div> 
    <div id="content"> 
    <p>the first page</p> 
    <p style="page-break-before: always;">the second page</p> 
    </div> 
</body> 
</html> 
+1

我也試圖添加一個頁碼,但這不適合我。我嘗試了 of <?php $ PAGE_COUNT?>''和'<?php echo $ PAGE_NUM; ?>'和'',並沒有輸出任何東西。我確實在我的選項中啓用了PHP。有什麼想法嗎? – danielson317

+0

同樣在這裏,相同的嘗試和錯誤。無法讓它工作。唯一的辦法是CSS'counter(page)',但不能讓'counter(pages)'顯示'0'以外的其他內容...... –

11

我也嘗試添加PHP代碼到HTML,但從來沒有得到一個機會,使其工作。這裏是我保證可以工作的完整的內聯代碼:

require_once("dompdf_config.inc.php"); 
$html ='<html> 
     <body> 
     <p>Hello Hello</p><p style="page-break-after:always;page-break-before:always">Hello Hello 2</p><p>Hello Hello 3</p> 
     </body> 
     </html>'; 

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 

$dompdf->render(); 

$canvas = $dompdf->get_canvas(); 
$font = Font_Metrics::get_font("helvetica", "bold"); 
$canvas->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); 

$dompdf->stream("my_pdf.pdf", array("Attachment" => 0)); 
?> 
+1

也許很明顯,但請確保將常量DOMPDF_ENABLE_PHP設置爲true。 – tomvo

+0

@tomvo - 不那麼明顯!謝謝你的提示。 – SPRBRN