2016-09-13 2 views
0

Je crée une lettre type à partir d'une table de commandes. Chaque commande peut avoir 1 ou 2 pages. Le PDF contient toutes les commandes. Maintenant, je veux mettre les numéros de page pour chaque commande sur le PDF.FPDF Obtention des numéros de page d'une lettre type 1 ou 2 faces

Premier Ordre: Pages 1 et 2, Second Ordre: Page 3, Troisième Ordre Page 4.

Le nombre de pages dépend de combien d'articles un client a commandé (maximum 2 pages).

PageNo() utilise le document entier pour la numérotation. Peut-être que quelqu'un a eu le même problème?

Répondre

0

Le résultat attendu peut être obtenu en sous-classant la classe FPDF du FPDF et en ajoutant une propriété $orderPageNo pour garder trace du «numéro de sous-page» de l'ordre en cours. Vous pouvez ensuite utiliser cette propriété dans votre méthode Header ou Footer personnalisée.

Exemple:

<?php 

require('fpdf/fpdf.php'); 

class PDF extends FPDF { 

    protected $orderNumber, $orderPageNo; 

    function AcceptPageBreak() { 
     $accept = parent::AcceptPageBreak(); 
     if ($accept) { 
      $this->orderPageNo++; 
     } 
     return $accept; 
    } 

    function Header() { 
     $this->Cell(50, 30, 'Order #'.$this->orderNumber); 
     $this->Cell(50, 30, 'Page '.$this->orderPageNo, 0, 1); 
    } 

    function Order($orderNumber, $items) { 
     $this->orderNumber = $orderNumber; 
     $this->orderPageNo = 1; 
     $this->AddPage(); 

     for ($i = 1; $i <= $items; $i++) { 
      $this->Cell(30, 12, 'Item #'.$i, 1, 1); 
     } 
    } 

} 

$pdf = new PDF(); 
$pdf->SetFont('Arial', '', 12); 

$orders = array(1 => 15, 2 => 25, 3 => 35); 
foreach ($orders as $orderNumber => $items) { 
    $pdf->Order($orderNumber, $items); 
} 

$pdf->Output();