2009-03-28 10 views
4

phpのdompdfライブラリを使用して、HTMLテンプレートからPDFレポートを生成しています。そのhtmlテンプレートには、セクションの目次があります。 PDFを作成するときは、目次のページ番号を更新する必要があります。誰も私はPHPのdompdfライブラリでこれを達成する方法を知っていますか?dompdfを使用して目次を生成するにはどうすればよいですか?

ありがとうございます。

答えて

0

あなたは既にこれを解決している可能性がありますか?私はdompdfを使っていませんが、私はZend_Pdfで同様のことをしました:目次のために空白のページを作ってから、page_number => titleの配列を保って他のすべての後のページを作りました。終わりに、私は戻って、以前に保存された参照を使用してコンテンツページを更新...

1

は、HTML(H1、H2、H3を含む)から目次を生成する、私は次のようでした:

  • 最初にすべてのヘッダに一意のIDを与えます(我々はPrinceXMLを使用しているため)。
  • 次に、そのコードにバグが含まれていても、そのOL/LI構造を作成してください。

参照:http://pastie.org/655728

1

私はDrupalのでこれを達成し、それは、他のPHPのオープンソースやフレームワーク上で動作します推測しています。 私は、ページ番号を格納し、テンプレート内のスクリプトタグ

$GLOBALS['entity_page'][] = $pdf->get_page_number();   

の内側にこのコードを保持しています。 テンプレートは、私は......

$canvas = $dompdf->get_canvas(); 
    $font = Font_Metrics::get_font("helvetica", "normal"); 
    $canvas->page_text(520, 805, "Page {PAGE_NUM}", $font, 9, array(0.4, 0.4, 0.4)); 

    foreach ($GLOBALS['entity_page'] as $key => $val) { 
     $GLOBALS["entity_val"] = 0; 
     $GLOBALS["entity_y"] = 110; 
     $canvas->page_script('if($PAGE_NUM == 3 && $PAGE_NUM < 4){ 
       $font = Font_Metrics::get_font("helvetica", "normal"); 
       $x = 380; 
       $y = $GLOBALS["entity_y"]; 

       $pdf->text($x, $y, "-------------------------".$GLOBALS["entity_page"][$GLOBALS["entity_val"]]."", $font, 12, array(0, 0, 0, 0.8)); 
       $GLOBALS["entity_y"] = $GLOBALS["entity_y"] + 33; 
       $GLOBALS["entity_val"] = $GLOBALS["entity_val"] + 1; 

       }'); 
    } 

$ PDF->テキストこの部分は一定の増分でページ番号を追加を追加した輸出のために他のコードの後のモジュール で今 tpl.php拡張子でありますy軸の位置です。他のグローバル変数entity_yとentity_valは、値を格納するために使用されます。

関連する問題