2012-07-03 14 views
7

Ich bin beschäftigt mit einem Projekt, das viele PDF-Dateien benötigt. Da alle das Design der Firma benötigen, verwende ich ein Hintergrundbild mit dem Logo/Wasserzeichen.TCPDF autopagebreak + backgroundimage

Alles geht gut, wenn ich nur 1 Seite habe, aber wenn es mehrere Seiten gibt, ist der Hintergrund nur auf dem ersten.

$pdf->Image('bg/background.jpg', 0, 0, 210, 297, '', '', '', false, 0, '', false, false, 0); 
     $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 
$pdf->setPageMark(); 
$pdf->SetAutoPageBreak(true); 
$pdf->writeHTML($bodyText, true, true, true, true, ''); 
$pdf->lastPage(); 
$pdf->Output('doc.pdf', 'I'); 

So ist mein $ bodytext mehr als 1 Seite ...

Gibt es eine Lösung auf jeder Seite einen Hintergrund zu haben?

Dank

Wouter

Antwort

19

Sie können die TCPDF-Klasse mit einer benutzerdefinierten Header-Funktion erweitern und Bild hinzufügen, mit TCPDF::Image auf Header. Es ist ein Beispiel dafür, wie dies in den TCPDF examples

Aus dem Beispiel zu tun:

// Extend the TCPDF class to create custom Header and Footer 
class MYPDF extends TCPDF { 
    //Page header 
    public function Header() { 
     // get the current page break margin 
     $bMargin = $this->getBreakMargin(); 
     // get current auto-page-break mode 
     $auto_page_break = $this->AutoPageBreak; 
     // disable auto-page-break 
     $this->SetAutoPageBreak(false, 0); 
     // set bacground image 
     $img_file = K_PATH_IMAGES.'image_demo.jpg'; 
     $this->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0); 
     // restore auto-page-break status 
     $this->SetAutoPageBreak($auto_page_break, $bMargin); 
     // set the starting point for the page content 
     $this->setPageMark(); 
    } 
} 

Und verwenden MYPDF statt TCPDF wie Sie TCPDF verwenden würden. Das Einzige, was ich nicht weiß, ob der PDF-Body mit dem Header überlappen kann, aber ich denke es kann, wenn Sie explizit die Ränder und die Header-Größe angeben.

Lassen Sie mich wissen, ob das funktioniert.

+0

Danke! Das funktioniert großartig! – TwinsIT

+1

können Sie es als Lösung jederzeit markieren, auch up-voice es, wenn Sie das Gefühl es verdient – SinistraD

+0

Funktioniert für mich auch, danke. – ekerner