2012-10-08 112 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