2012-07-03 184 views
7

Estoy ocupado con un proyecto que necesita una gran cantidad de archivos pdf. Como todos ellos necesitan el diseño de la empresa, utilizo una imagen de fondo con el logotipo/marca de agua.TCPDF autopagebreak + backgroundimage

Todo va bien si tengo solo 1 página, pero cuando hay varias páginas, el fondo está solo en la primera.

$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'); 

Así que mi $ bodyText es más de 1 página ...

¿Existe una solución para tener todas las páginas de un fondo?

Gracias

Wouter

Respuesta

19

usted podría extender la clase TCPDF con una función de encabezado personalizado, y añadir una imagen a la cabecera, con TCPDF::Image. Hay un ejemplo de cómo hacer esto dentro de la TCPDF examples

A partir del ejemplo:

// 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(); 
    } 
} 

Y el uso de MYPDF en lugar de TCPDF del mismo modo que utilice TCPDF. Lo único que no sé es si el cuerpo del PDF se puede superponer con el encabezado, pero creo que sí si se especifican explícitamente los márgenes y el tamaño del encabezado.

Avísame si esto funciona.

+0

Gracias! Esto funciona genial! – TwinsIT

+1

puede marcarlo como solución en cualquier momento, también puede votar si siente que merece – SinistraD

+0

También funciona para mí, gracias. – ekerner

Cuestiones relacionadas