2012-10-08 535 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); 
?> 

私はページ番号を取得するために、このスクリプトを使用しますが、それだけで2ページ目ならば印刷しますそれ以外の場合は印刷されません。

<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

私もページ番号を追加しようとしていますが、これは私のためには機能しませんでした。私は、<?php $ PAGE_COUNT?> 'と' <?php echo $ PAGE_NUM;のページ<?php $ PAGE_NUM?>を試しました。 ?> 'と' 'となり、何も出力されません。私は自分のオプションでPHPを有効にしています。何かご意見は? – danielson317

+0

同じですが、同じ試行錯誤です。それを働かせることはできません。唯一の方法はCSSの 'counter(page)'ですが、 '0 '以外のものを表示する' counter(pages)'を得ることはできません... –

11

....また、このリンクをチェックし、私はまた、HTMLにPHPコードを追加しようとしましたが、それを動作させるためのチャンスを得たことがありません。ここで私は作品を保証する完全なインラインコードです:

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