IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[FPDI] Problème d'Output en mode fichier


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut [FPDI] Problème d'Output en mode fichier
    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


    Les boutons et existent, servez-vous en

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ouvre le fichier anormal avec un editeur de texte pour voir s'il ne contient pas des erreurs PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Salut,

    J'ai testé avec notepad++ mais pas d'erreur PHP dans le fichier

    EDIT : Bon ba en fait le problème vient de l'envoi du mail, sur le serveur le fichier est bon...

    Voici le code qui me permet d'envoyer le mail avec la pièce-jointe :
    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
     
    // Instanciation de la classe message
                $message = new Message;
     
                $headers = new Headers;
                $headers->addHeaderLine("Content-type: text/html");
     
                // Piece jointe PDF
                $attachment = new MimePart(fopen($factureLink, 'r'));
                $attachment->type     = 'application/pdf';
                $attachment->charset  = 'utf-8';
                $attachment->filename = $numFacture . '.pdf';
     
                // Contenu HTML
                $bodyMessage = new MimePart($content);
                $bodyMessage->type = 'text/html';
     
                // Add the message body and attachment(s) to the MimeMessage
                $bodyPart = new MimeMessage;
                $bodyPart->setParts(array($bodyMessage, $attachment));
     
                // Parametres du mail
                $message->setEncoding('utf-8')
                        ->setHeaders($headers)
                        ->setTo($userEmail)
                        ->setFrom($fromMail, $fromMail
                        ->setSubject("Votre facture")
                        ->setBody($bodyPart);
     
                // Instanciation de la classe Transport\Smtp permettant d'envoyer le mail
                $mail = new Smtp;
     
                // Envoi du mail
                if ($message->isValid()) {
                    $mail->send($message);
                }


    Les boutons et existent, servez-vous en

Discussions similaires

  1. Problème d'écriture dans un fichier en mode binaire
    Par Linkht dans le forum Général Python
    Réponses: 6
    Dernier message: 11/08/2011, 03h41
  2. problème avec output fichier XML
    Par soumti84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/04/2009, 18h13
  3. Réponses: 7
    Dernier message: 02/09/2008, 18h42
  4. Problème input/output fichier
    Par nenekes dans le forum Cobol
    Réponses: 3
    Dernier message: 09/09/2006, 22h54
  5. Problème d'E.S. sur fichier avec open
    Par Bubonik software dans le forum C
    Réponses: 6
    Dernier message: 04/02/2004, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo