Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PDF > FPDF
FPDF Forum d'entraide pour la bibliothèque FPDF permettant de générer des documents PDF en PHP. Avant de poster -> tutoriels FPDF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/08/2011, 13h01   #1
Membre à l'essai
 
Développeur informatique
Inscription : décembre 2007
Messages : 155
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2007
Messages : 155
Points : 20
Points : 20
Par défaut 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:
Citation:
FPDF error: Not a PNG file: http://127.0.0.1/appels/fig1a.php?_j...&val_3=20.0000
En vous remerciant d'avance pour vos réponses.
Gobelins est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 14h21   #2
Membre éclairé
 
Avatar de Kaamo
 
Homme Cyril
Ingénieur développement logiciels
Inscription : avril 2007
Messages : 205
Détails du profil
Informations personnelles :
Nom : Homme Cyril
Localisation : France, Nord (Nord Pas de Calais)

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

Informations forums :
Inscription : avril 2007
Messages : 205
Points : 367
Points : 367
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 :
$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.
Kaamo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 15h15   #3
Membre à l'essai
 
Développeur informatique
Inscription : décembre 2007
Messages : 155
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2007
Messages : 155
Points : 20
Points : 20
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 :
 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 :
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.
Gobelins est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 15h41   #4
Membre éclairé
 
Avatar de Kaamo
 
Homme Cyril
Ingénieur développement logiciels
Inscription : avril 2007
Messages : 205
Détails du profil
Informations personnelles :
Nom : Homme Cyril
Localisation : France, Nord (Nord Pas de Calais)

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

Informations forums :
Inscription : avril 2007
Messages : 205
Points : 367
Points : 367
Ce qui pose problème ce sont les lignes de ce type

Code :
$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à.
Kaamo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 16h27   #5
Membre à l'essai
 
Développeur informatique
Inscription : décembre 2007
Messages : 155
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2007
Messages : 155
Points : 20
Points : 20
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 :
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:

Citation:
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:
Citation:
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
Gobelins est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 17h44   #6
Membre éclairé
 
Avatar de Kaamo
 
Homme Cyril
Ingénieur développement logiciels
Inscription : avril 2007
Messages : 205
Détails du profil
Informations personnelles :
Nom : Homme Cyril
Localisation : France, Nord (Nord Pas de Calais)

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

Informations forums :
Inscription : avril 2007
Messages : 205
Points : 367
Points : 367
en effet, le type généré par le script n'est pas un fichier image supporté par Image() de FPDF.
Kaamo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h37.


 
 
 
 
Partenaires

Hébergement Web