Beiträge durchsuchen

PDF mit TCPDF selbst erstellen Teil-2 Header und Footer

Ok im ersten Teil habe ich nur gezeigt wie mann überhaupt in Scriptcase mit der TCPDF-Bibliothek arbeitet. In diesem Teil möchte ich euch zeigen wie Ihr einen eigenen Header und Footer erstellt, der Automatisch beim erstellen einer Seite hinzugefügt wird. Das ist zwar normalerweise erst etwas für später, aber ich gehe nach der Deklaration im Code vor und da muss dies ganz an den Anfang und deshalb ist das schon im 2. Teil dabei.

Die TCPDF-Methoden Header() und Footer() sind geschützt und werden automatisch aufgerufen. Solange Ihr diese nicht mit
setPrintHeader( false) bzw.
setPrintFooter( false) abgeschaltet habt.

Header() wird aufgerufen wenn eine Seite erstellt wird, entweder durch den Befehl addPage(), den ich im ersten Teil gezeigt habe, oder durch einen Seitenwechsel wenn der Inhalt zu Große für eine Seite ist oder durch einen manuellen Seitenwechsel. Die Aktionsreihenfolge:

  • AddPage() 
    • Header()
  • Der Inhalt wird geschrieben
  • Der Inhalt bedingt einen Seitenwechsel (Pagebreak)
  • Pagebreak()
    • Footer() wird ausgelöst und
    • Header() direkt nach dem einfügen der neuen Seite
  • Dann wird wieder Inhalt geschrieben, bis zum nächsten Pagebreak

Header() und Footer() sind geschützte Methoden, können also nicht direkt aufgerufen bzw. geändert werden. Um diese zu nutzen müssen diese mit einer Klasse erweitert werden.

Wer jetzt versucht wie im Beispiel-3 auf der TCPDF Seite die Klasse direkt in der blanken Applikation zu erstellen der wird auf die verschiedensten Fehlermeldungen treffen. Wir müssen die Klasse also woanders erstellen und dann einbinden. Die Interne Bibliothek bietet sich hier zwar an, aber wird von Scriptcase zur Definition von Klassen nicht empfohlen. Also bleibt auch nur ein Ort übrig, die externen Librarys. Ihr könnt also das Beispiel von der TCPDF Seite nehmen und in eine Datei Kopieren und diese dann als PHP Endung umbenennen und dann über das Menü als Externe Library einbinden. Unten seht Ihr das Beispiel der Erweiterten Klasse für Header und Footer.

// Extend the TCPDF class to create custom Header and Footer
class MYPDF extends TCPDF {

    //Page header
    public function Header() {
        // Logo
        $image_file = K_PATH_IMAGES.'logo_example.jpg';
        $this->Image($image_file, 10, 10, 15, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
        // Set font
        $this->SetFont('helvetica', 'B', 20);
        // Title
        $this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
    }

    // Page footer
    public function Footer() {
        // Position at 15 mm from bottom
        $this->SetY(-15);
        // Set font
        $this->SetFont('helvetica', 'I', 8);
        // Page number
        $this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
    }
}
Nachdem Ihr die Klasse erstellt habt und nach euren wünschen die Klasse abgeändert habt, müssen wir diese einbinden
sc_include_library("prj","ExtendingTCPDF","HeaderAndFooter.php",true,true);

Danach wird das erstellen des Objektes nicht mehr TCPDF sondern MyPDF da wir unsere eigene Klasse erstellt haben und diese die Klasse TCPDF erweitert.
Also wird aus
$pdf = new TCPDF('P','mm','A4',true,'utf-8',false,true);

das hier
$pdf = new MYPDF('P','mm','A4',true,'utf-8',false,true);

Weiter geht es dann im 3. Teil

Schreibe einen Kommentar