Statistiques

Compteur d'affichages des articles
1093088

5.6 - Entête de page (header) avec logo

 Pour ajouter un header personnalisé on passe aussi par le fichier custom.php.

class MYPDF extends TCPDF {

    //Page header
	public function Header() {
        // Logo
        $image_file = 'images/header2.png';
        $this->Image($image_file, 10, 10, '', '', 'png', '', 'T', false, 300, '', false, false, 0, false, false, false);
    }

    // Page footer
    public function Footer() {
		// Position at 15 mm from bottom
        $this->SetY(-15);
        // Set font
        $this->SetFont('helvetica', 'I', 8);
        // Page number
		$width=$this->getPageWidth();
		$cell_width=($width-20)/2;
		$txt='Page '.$this->PageNo().'/'.$this->getAliasNbPages();
		if ($this->PageNo()%2) {
			$this->MultiCell($cell_width, 15,PDF_TITLE, 0, 'L', 0, 0, '', '', true);
			$this->MultiCell($cell_width, 15, $txt, 0, 'R', 0, 0, '', '', true);
		} else {
			$this->MultiCell($cell_width, 15, $txt, 0, 'L', 0, 0, '', '', true);
			$this->MultiCell($cell_width, 15,PDF_TITLE, 0, 'R', 0, 0, '', '', true);
		}
		$this->Ln(2);
	}
}

Cela affiche le logo sur toutes les pages :

Pdf avec Header

Le besoin initial était d'avoir le logo sur la première page mais pas sur les autres.

La modification suivante donne ce résultat:

    //Page header
	public function Header() {
        // Logo
        if ($this->PageNo()<2) {
			$image_file = 'images/header2.png';
			$this->Image($image_file, 10, 10, '', '', 'png', '', 'T', false, 300, '', false, false, 0, false, false, false);
		}
	}

On voit aussi que le texte passe sur le logo. Pour éviter cela, il suffit d'augmenter la marge haute.

 Cette modification règle le problème:

    //Page header
	public function Header() {
        // Logo
        if ($this->PageNo()<2) {
			$image_file = 'images/header2.png';
			$this->Image($image_file, 10, 10, '', '', 'png', '', 'T', false, 300, '', false, false, 0, false, false, false);
			$this->SetTopMargin(getimagesize($image_file)[1]);
		} else {
			$this->SetTopMargin(PDF_MARGIN_TOP);
		
		}
	}

Voici le haut des 2 premières pages:

Page 1 Page 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L'affichage des détails de l'article ne sont pas nécessaires pour un fichier Pdf.

Pour les enlever, nous devons travailler sur l'enregistrement de l'article dans la base en travaillant sur les champs introtext et fulltextext.

Les lignes :

			if ($printpdf==1) {

				//get document html from joomla cycle
				$data = JResponse::getBody();

				//setup dompdf objects
				$pdf = $this->pdf;

deviennent :

			$id = JRequest::getInt('id');
			if ($printpdf==1) {
				$db = JFactory::getDBO();
				$query = "SELECT * FROM #__content WHERE id = ".$id." LIMIT 1";
				$db->setQuery($query);
				$result = $db->loadObject();
				//get document html from joomla cycle
				$data = $result->introtext.$result->fulltext;
				$title= $result->title;
				//setup dompdf objects
				$pdf = $this->pdf;

Voici le résultat :

Pdf sans les détails

 

 Oui mais il manque le titre!

 Pour cela modifions les lignes suivantes :

				// Add a page
				// This method has several options, check the source code documentation for more information.
				$pdf->AddPage();

				//create pdf using dompdf engine
				$pdf->writeHTMLCell($w=0, $h=0, $x=$pdf->getx(), $y=$pdf->gety(), $data, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true);

par celles-ci :

				// Add a page
				// This method has several options, check the source code documentation for more information.
				$pdf->AddPage();
				// Set font
				// dejavusans is a UTF-8 Unicode font, if you only need to
				// print standard ASCII chars, you can use core fonts like
				// helvetica or times to reduce file size.
				$pdf->SetFont('dejavusans', '', 20, '', true);
				$pdf->writeHTMLCell($w=0, $h=0, $x=$pdf->getx(), $y=$pdf->gety(), $title, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true);
				$pdf->SetFont('dejavusans', '', 10, '', true);

				//create pdf using dompdf engine
				$pdf->writeHTMLCell($w=0, $h=0, $x=$pdf->getx(), $y=$pdf->gety(), $data, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true);

Cela donne:

Pdf avec titre

A vous d'affiner la police de caractères ainsi que la taille .....

Nous verrons comment gérer des paramètres ainsi que le positionnement des images dans le prochain article.