Bonjour à tous,

J'ai un petit souci avec la librairie fpdi que j'utilise pour générer une facture (j'ai un modele de facture vide remplit dynamiquement avec fpdi) dans mon appli ZF2, lorsque je fait un output en mode browser ($pdf->output('facture.pdf', 'D'); ), mon PDF s'ouvre correctement et tout marche bien, en revanche, quand je veut l'enregistrer sur mon serveur pour l'envoyer en piece jointe d'un mail, je recoit un pdf de 63ko avec uniquement l'adresse de facturation (générée avec FPDI) mais sans le reste des données, j'ai aussi une erreur d'adobe reader qui me dit :

Cette page contient une erreur. Acrobat risque de ne pas afficher cette page correctement. Contactez l'auteur du document PDF pour résoudre le problème.
Même problème quand je télécharge le fichier qui à été généré sur le serveur, le problème ne vient donc pas de l'envoi du mail.

Voici le code de ma fonction qui genère la facture :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
 
/**
     * Generation de la facture
     * 
     * @param int $paiementId, ID du paiement
     * @param array $data, Données de l'achat
     * @return void
     */
    private function _makeFacture($paiementId, $data)
    {
        require_once(ROOT_PATH . '/vendor/fpdi/fpdf.php'); 
    	require_once(ROOT_PATH . '/vendor/fpdi/fpdi.php');
 
        // Instanciation de FPDI
    	$pdf = new \FPDI(); 
 
        // Instanciation de la table Achats
        $achatsTable = $this->getAchatsTable();
 
        // Import du model de facture vide
    	$pagecount = $pdf->setSourceFile(ROOT_PATH . '/public/facture.pdf'); 
    	$tplidx = $pdf->importPage(1); 
 
        // Configuration du template
    	$pdf->addPage(); 
    	$pdf->useTemplate($tplidx); 
 
        // Positionnement et definition de la police
        $x = 135;
        $y = 73;
        $pdf->SetTextColor(0,0,0);
        $pdf->SetFont('Arial','',11);
 
        // Nom du client
        if (isset($data['address_name']) && !empty($data['address_name'])) {
            $pdf->setXY($x, $y);
            $pdf->Write(5, ucwords(iconv('UTF-8', 'ISO-8859-2', $data['address_name'])));
        } else {
            $y -= 6;
        }
 
        // Adresse
        if (isset($data['address_street']) && !empty($data['address_street'])) {
            $y += 6;
            $pdf->setXY($x, $y);
            $pdf->Write(5, ucwords(iconv('UTF-8', 'ISO-8859-2', $data['address_street'])));
        }
 
        // Code postal et ville
        if ((isset($data['address_zip']) && !empty($data['address_zip'])) || (isset($data['address_city']) && !empty($data['address_city']))) {
            $y += 6;
            $pdf->setXY($x, $y);
            $pdf->Write(5, $data['address_zip'] . '  ' . ucwords(iconv('UTF-8', 'ISO-8859-2', $data['address_city'])));
        }
 
        // Numero de facture
        $numFacture = $paiementId;
        while (strlen($numFacture) < 8) {
            $numFacture = '0' . $numFacture;
        }
        $numFacture = 'AL' . $numFacture;
        $x = 65;
        $y = 114;
        $pdf->setXY($x, $y);
        $pdf->SetFont('Arial','B',18);
        $pdf->Write(10, $numFacture);
 
        // Date
        $pdf->SetFont('Arial','B',11);
        $x = 28;
        $y = 124;
        $pdf->setXY($x, $y);
        $pdf->Write(5, date('d/m/Y'));
 
        // Designation
        $pdf->SetFont('Arial','',12);
        $x = 25;
        $y = 152;
        $pdf->setXY($x, $y);
        $pdf->Write(5, iconv('UTF-8', 'ISO-8859-2', "Annonces"));
 
        // Periode
        $x = 105;
        $pdf->setXY($x, $y);
        $pdf->Write(5, date('d/m/Y'));
 
        // Recuperation du nombre d'annonce
        $nbAnnonces = $achatsTable->getNbAnnonces($paiementId);
 
        // Quantite
        $x = 147;
        if (strlen($nbAnnonces) == 1) {
            $x += 1;
        }
        $pdf->setXY($x, $y);
        $pdf->Write(5, $nbAnnonces);
 
        // Montant
        $x = 173;
        $pdf->setXY($x, $y);
        $pdf->Write(5, $this->_getAdPrice(date('Y-m-d')));
 
        // Taux de TVA
        $y = 165;
        $pdf->setXY($x, $y);
        $pdf->Write(5, $data['mc_gross']);
 
        // Taux de TVA
        $y = 176;
        $tauxTva = '0.00';
        $pdf->setXY($x, $y);
        $pdf->Write(5, $tauxTva . ' %');
 
        // Montant TVA
        $y = 186;
        $montantTva = '0.00';
        $pdf->setXY($x, $y);
        $pdf->Write(5, $montantTva);
 
        // Montant net
        $y = 196;
        $pdf->setXY($x, $y);
        $pdf->Write(5, $data['mc_gross']);
 
    	$pdf->Output(ROOT_PATH . '/public/factures/' . $numFacture . '.pdf', 'F');
    }
Merci d'avance pour votre aide