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 :

[FPDF] Erreur lors de génération d'un document PDF


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club Avatar de Gobelins
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2007
    Messages : 171
    Points : 60
    Points
    60
    Par défaut [FPDF] Erreur lors de génération d'un document PDF
    Bonjour,

    J'ai crée une application web (PHP/MYSQL) avec des rubriques dont l'une intitulée statistiques.

    Pour l'installation de FPDF, j'ai téléchargé et j'ai mis dans le répertoire racine de mon site :

    •Les sources PHP fpdf.php et phpToPDF.php;
    •Le répertoire "font/" qui contient les fonts.

    Pour la rubrique statistiques, il existe des fichiers concernant la génération des graphiques comme par exemple: graphe1, graphe2, etc., ainsi fig1a, fig1b, etc., par ailleurs, un fichier pdf.php, ainsi j'ai écris un fichier states.inc.php.

    Je rencontre une difficulté lorsque je clique sur "Générer PDF" avec le symbole et l'image de PDF. Pourtant, j'ai une image intitulée pdf.PNG dans le dossier images.

    J'ai cherché et pour l'instant, je n'ai aps trouvé la solution.

    L'erreur est la suivante:
    En vous remerciant d'avance pour vos réponses.

  2. #2
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Que fait le bouton "Générer PDF" ? Il génére un PDF qui intègre une image à l'intérieur ?
    Donc, tu dois utiliser la méthode image() de l'objet pdf ?

    Si oui, vérifie bien que le premier paramètre est une image.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdf->Image('image/pdf.PNG', 400, 200);
    Si ça ne fonctionne toujours pas :
    Ouvre ton image avec un logiciel de graphisme, enregistre-la dans un format .jpg, par exemple, puis de nouveau dans un format .png et re-test.

  3. #3
    Membre du Club Avatar de Gobelins
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2007
    Messages : 171
    Points : 60
    Points
    60
    Par défaut
    J'ai écris un fichier pdf.php danslequel se trouve les methodes image de l'objet pdf. Dans mon cas, j'ai des URL et des fichiers graphe1a, graphe1b, etc. Dans mon dossier images, j'ai une image de l'icone PDF et quand je clique sur l'icone de GénérerPDF, j'ai l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo "<IMG SRC=\"images/pdf.jpg\">&nbsp;<A HREF=\"pdf.php\" TARGET=\"PDF\">G&eacute;n&eacute;rer PDF</A>&nbsp;&nbsp;|&nbsp;" ;
    Voici le fichier pdf.php
    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
    <?php
     
    //*************************************************************************************************
    // FICHIER DE GENERATION DE PDF                                                                   *
    // S'APPUYANT SUR LES FICHIERS :                                                                  *
    // fig1a.php, fig1b.php, fig2a.php, fig3a.php, fig3b.php, fig4.php                                *
    //*************************************************************************************************
    // utilisation des variables de session
    session_cache_limiter('private');
     
    session_start();
     
    // inclusion de la classe fpdf
    include("pdf/fpdf.php");
     
    // inclusion du fichier de configuration
    // besoin de : SERVER_NAME, SCRIPT_NAME, FPDF_FONTPATH
    include "config.inc";
     
     
    function gen_pdf()
    {
     
      // Création du PDF
      $pdf=new FPDF();
      $pdf->Open();
      $pdf->AddPage();
      // titre
      $pdf->SetFont('Arial','B',16);
      //                                  premier 1 : texte encadré
      //                                    deuxième 1 : retour à la ligne
      $pdf->Cell(190,10, 'STATISTIQUES :',1,1,'C');
     
     
      // on gère chaque cas du panier
      foreach($_SESSION["panier"] as $graph)
      {
        // saut de ligne
        $pdf->ln();
        // titre de la statistique
        $pdf->Cell(190,10, $graph[3],0,1,'C');
        // période de la statistique
        $pdf->Cell(190,10, "Du ".$graph[1]." au ".$graph[2],0,1,'C');
     
        switch($graph[0])
        {
          case "graphe1":
            // graphique fig1a
            $pdf->Image("http://".SERVER_NAME."/".SCRIPT_NAME."/fig1a.php?_jpg_csimd=1".$graph[4], 30,60,150, null, 'PNG') ;
            // graphique fig1b
            $pdf->Image("http://".SERVER_NAME."/".SCRIPT_NAME."/fig1b.php?_jpg_csimd=1".$graph[5], 30,120,150, null, 'PNG') ;
            // on ajoute une page
            $pdf->AddPage();
            break;
          case "graphe2":
            // graphique fig2a
            $pdf->Image("http://".SERVER_NAME."/".SCRIPT_NAME."/fig2a.php?_jpg_csimd=1".$graph[4], 30,60,150, null, 'PNG') ;
            // on ajoute une page
            $pdf->AddPage();
            break;
          case "graphe3":
            // graphique fig3a
            $pdf->Image("http://".SERVER_NAME."/".SCRIPT_NAME."/fig3a.php?_jpg_csimd=1".$graph[4], 30,60,150, null, 'PNG') ;
            // graphique fig3b
            $pdf->Image("http://".SERVER_NAME."/".SCRIPT_NAME."/fig3b.php?_jpg_csimd=1".$graph[5], 30,150,150, null, 'PNG') ;
            // on ajoute une page
            $pdf->AddPage();
            break;
            //graphique fig4
          case "graphe4":
    	//Ci dessous, la version qui pose un problème       
            //$pdf->Image("http://".SERVER_NAME."/".SCRIPT_NAME."/fig4.php?_jpg_csimd=1&MYSID=".urlencode(session_id()) , 30,60,150, null, 'PNG');
            //Ci dessous, on met un message d'indisponibilté temporaire pour ce graphique
            $pdf->ln(30);
            $pdf->Cell(0,0, 'Graphique momentanément indisponible',0,1,'C');
            // on ajoute une page
            $pdf->AddPage();
            break;
        }
      }
     
      // on génère le PDF
      $pdf->Output();
      // suppression du fichier
      unlink($file);
    }
     
    // appel de la fonction de génération de PDF
    gen_pdf();
     
    ?>
    Normalement, quand je clique sur l'icone Générer PDF, il devrait s'afficher des graphiques statistiques, des camemberts en 3D et des tableaux.

  4. #4
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Ce qui pose problème ce sont les lignes de ce type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdf->Image("http://".SERVER_NAME."/".SCRIPT_NAME."/fig1a.php?_jpg_csimd=1".$graph[4], 30,60,150, null, 'PNG') ;
    ... et non le code utilisé pour afficher l'image qui appelle la fonction de génération du PDF.

    D'après la documentation FPDF, fig1a.php (et les autres) doit être accessible. le problème vient de là.

  5. #5
    Membre du Club Avatar de Gobelins
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2007
    Messages : 171
    Points : 60
    Points
    60
    Par défaut
    Je voudrais inclure une image dynamique générée avec la librairie JPGraph dans un document .pdf généré lui meme avec FPDF.

    Effectivement, le fichier fig1a.php dépend des fichiers et des trois scripts de JPGraph:

    Voici le code de fig1a.php
    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
    <?php
     
    //------------------------------------------------------------
    // fichier servant à générer le graphique 1a : camembert 3D
     
    include_once ("jpgraph/jpgraph.php");
    include_once ("jpgraph/jpgraph_pie.php");
    include_once ("jpgraph/jpgraph_pie3d.php");
     
    $data = array();
    $title = array();
     
    // on va chercher les valeurs passées en request,
    // et on les met dans deux tableaux ($date et $title)
    foreach($_REQUEST as $key => $value)
    {
      if(preg_match("/^val_(\d+)$/", $key, $res))
      {
        array_push($data, $value);
        array_push($title, $_REQUEST["title_".$res[1]]);
      }
    }
     
    // Create the Pie Graph.
    $graph = new PieGraph(600,200,'auto');
    //$graph->SetShadow();
     
    // Set A title for the plot
    $graph->title->Set("Répartition en % des appels selon le type");
    $graph->title->SetFont(FF_FONT1,FS_BOLD);
    //$graph->SetMarginColor('red');
    $graph->SetColor('#CCCCCC');
     
    // Create
    $p1 = new PiePlot3D($data);
    $p1->SetLegends($title);
    //$targ=array("pie3d_csimex1.php?v=1","pie3d_csimex1.php?v=2","pie3d_csimex1.php?v=3",
    //      "pie3d_csimex1.php?v=4","pie3d_csimex1.php?v=5","pie3d_csimex1.php?v=6");
    //$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
    $p1->SetCSIMTargets($targ,$alts);
     
    // Use absolute labels
    $p1->SetLabelType(1);
    $p1->value->SetFormat("%.2f");
     
    // Move the pie slightly to the left
    $p1->SetCenter(0.35,0.5);
     
    $graph->Add($p1);
     
    // Anti-aliasing
    //$graph->img->SetAntiAliasing();
     
    $graph->Stroke();
    //$graph->StrokeCSIM('fig1a.php') ;
    ?>
    J'ai lu dans un forum qui se trouve ailleurs intitulé inclure une image dynamique dans FPDF. La personne a écrit la phrase suivante:

    j'ai testé avec une adresse absolue mais la méthode Image() fonctionne apparemment qu'avec des "vrais" fichiers images, ca ne marche pas...
    La personne a trouvé cette solution:
    j'ai été obligé d'enregistrer les images dans un repertoire temporaire...
    c'est pas beau, c'est pas dynamique...
    Je n'arrive pas à trouver une solution

  6. #6
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    en effet, le type généré par le script n'est pas un fichier image supporté par Image() de FPDF.

Discussions similaires

  1. Réponses: 16
    Dernier message: 17/09/2010, 11h38
  2. Erreur lors du génération des rapports
    Par RouRa22 dans le forum NetBeans
    Réponses: 0
    Dernier message: 19/10/2009, 10h58
  3. [VxiR2] Erreur lors de lancement d'un document
    Par MOMOLAM dans le forum Webi
    Réponses: 3
    Dernier message: 20/08/2009, 15h43
  4. Erreur lors de génération avec WSDL2Java ( AXIS )
    Par jf_j2ee dans le forum Services Web
    Réponses: 1
    Dernier message: 28/05/2008, 18h30

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