2009-03-28 21 views
4

Ich verwende die Dompdf-Bibliothek von PHP, um PDF-Bericht von einer HTML-Vorlage zu generieren. In dieser HTML-Vorlage gibt es einen Abschnitt Inhaltsverzeichnis. Wenn ich PDF generiere, muss ich die Seitennummer des Inhaltsverzeichnisses aktualisieren. Weiß jemand wie ich das in der dompdf php Bibliothek erreichen kann?Wie generiert man Inhaltsverzeichnis mit dompdf?

Vielen Dank im Voraus.

Antwort

0

Sie haben das vielleicht schon gelöst? Ich habe dompdf nicht benutzt, aber ich habe eine ähnliche Sache in Zend_Pdf gemacht: Ich habe eine leere Seite für das Inhaltsverzeichnis erstellt und dann alle anderen späteren Seiten erstellt, wobei ich ein Array von page_number => title beibehalten habe. Am Ende ging ich zurück und die Inhaltsseite mit der Referenz gespeichert früher aktualisiert ...

1

ein Inhaltsverzeichnis von HTML-Generierung (mit h1, h2, h3), habe ich die folgenden:

  • Geben Sie zuerst jedem Header eine eindeutige ID (weil wir PrinceXML verwenden) und ist eine gute Praxis.
  • Dann erstellen Sie eine OL/LI-Struktur davon, obwohl dieses Stück Code Fehler enthalten kann.

See: http://pastie.org/655728

1

ich dies in Drupal erreicht haben und denke, es ist aber auch auf andere PHP-Open-Source-Frameworks und funktioniert. Ich habe diesen Code in Script-Tag gehalten

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

in Vorlage, die die Seitennummer speichert. Template ist mit der Erweiterung tpl.php Jetzt im Modul nach anderen Codes für den Export ich hinzugefügt haben ......

$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-> Text dieser Teil die Seitenzahlen mit konstanter Schrittweite ergänzt in Y-Achsenposition. Andere globale Variablen entity_y und entity_val werden zum Speichern der Werte verwendet.