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] Afficher image blob sur PDF


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 25
    Points : 17
    Points
    17
    Par défaut [FPDF] Afficher image blob sur PDF
    Bonjour à tous,

    Je suis actuellement en stage et je dois développer le nouveau site internet de cette entreprise.
    J'ai créé une base de données dans laquelle j'ai stocké les produits (num, titre, image, ...). L'image est stockée au format blob.
    J'ai réussi après plusieurs jours à afficher l'image contenue dans la base de données grâce au code suivant :

    afficher_img_pdt.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
     
    <?php
        $connexion=mysql_connect("","","");
        mysql_select_db("lcb");
        $titre=$_GET['titre'];
        $requete = "SELECT image1, type_img1 FROM produits WHERE titre='$titre'";
        $resultat = mysql_query($requete, $connexion);
        $donnees = mysql_result($resultat, article.logo);
        $type = mysql_result($resultat, 0, article.type_img);
        header('Content-type: image/"$type"');
        header('Content-transfer-encoding: binary');
        echo mysql_result($resultat, 0);
        mysql_close($connexion);
    ?>
    Sur la page où je souhaite afficher une fiche du produit, j'affiche l'image comme ceci :

    fiche_pdt.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="afficher_img_pdt.php?titre=<?php echo $row['titre']; ?>" />
    Je vous expose maintenant mon problème
    Je dois générer le pdf de ces produits avec le titre, la description et l'image !
    Pour générer le pdf, j'utilise la librairie FPDF. Et là, je suis bloquée depuis plusieurs jours pour afficher cette image.
    J'ai essayé plusieurs choses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $img = "<img src='afficher_img_pdt.php?titre=".$titre."' />";
    $PDF->Image($img, 35, 55, 55);
    J'ai également essayé de mettre l'url en entier, mais ça ne fonctionne pas non plus.

    J'espère avoir été claire pour exposer mon problème.
    Je vous remercie par avance pour vos réponses

  2. #2
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Je vois que ça n'inspire personne...

    J'ai essayé autre chose depuis l'autre jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $PDF->WriteHTML("<img src='afficher_img_pdt.php?titre=$titre' height=50 width=50>");
    Mais j'obtiens l'erreur suivante :
    FPDF error: Unsupported image type: php?titre=
    La fonction WriteHTML() est visible ici : http://www.fpdf.org/download/html2pdf.phps

    J'aimerai bien une réponse aujourd'hui
    Merci d'avance

  3. #3
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Citation Envoyé par Saphir09 Voir le message
    L'image est stockée au format blob.
    Beurk.

    Citation Envoyé par Saphir09 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
        $connexion=@mysql_connect("","","");
        @mysql_select_db("lcb");
    $titre=$_GET['titre'];
        $requete = "SELECT image1, type_img1 FROM produits WHERE titre='$titre'";
        $resultat = @mysql_query($requete, $connexion);
        $donnees = @mysql_result($resultat, article.logo);
        $type = @mysql_result($resultat, 0, article.type_img);
        header('Content-type: image/"$type"');
    	header('Content-transfer-encoding: binary');
    	echo mysql_result($resultat, 0);
    	mysql_close($connexion);
    ?>
    ouch, les "@"... Mais bon, passons.


    Citation Envoyé par Saphir09 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $img = "<img src='afficher_img_pdt.php?titre=".$titre."' />";
    $PDF->Image($img, 35, 55, 55);
    La fonction Image() ne fonctionne pas comme ça. http://www.fpdf.org/fr/doc/image.htm

    Le premier paramètre est le chemin vers l'image.
    1 solution rapide à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $img = "<img src='afficher_img_pdt.php?titre=".$titre."' />";
    $PDF->Image("afficher_img_pdt.php?titre=".$titre, 35, 55, 55);
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci pour ta réponse !

    Pour l'image enregistrée en blob dans la base de données, je sais que ce n'est pas la meilleure solution. Mais la personne pour qui je réalise le site, voulait pouvoir gérer le plus facilement possible son site internet.

    J'ai essayé la solution que tu proposes mais j'obtiens l'erreur suivante :
    FPDF error: Unsupported image type: php?titre=***
    Aurais-tu d'autres idées ?

  5. #5
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Si toutes les images ont la même extension, tu peux la forcer.
    Par exemple, pour si ce sont tous des jpg :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $img = "<img src='afficher_img_pdt.php?titre=".$titre."' />";
    $PDF->Image("afficher_img_pdt.php?titre=".$titre, 35, 55, 55, 'jpg');
    Cela supprimera le contrôle automatique pour que le script détecte quel type d'image vous lui donnez.

    Si ce n'est pas le cas, je pense qu'il n'y a que 3 autres solutions plus ou moins bonne selon le besoin :
    • Arreter d'utiliser la base pour stocker des images (perso, je ne trouve pas que ce soit une bonne solution, quelque soit le besoin).
    • Enregistrer les images depuis la base dans un fichier temporaire, le placer dans le PDF puis le supprimer.
    • Utiliser autre chose que FPDF ou le modifier (l'étendre).
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Toujours la même erreur...

    J'aimerai essayer la deuxième solution que tu proposes.
    Mais comment dois-je m'y prendre ?

    Si je ne m'en sors pas avec, je ferai la première. En fait, l'utilisateur remplit la base de données depuis un formulaire. Il ne va pas dans phpMyAdmin et n'utilise pas de logiciel tel que winscp pour mettre de nouveaux produits (images). Alors comment faire avec les images ?

    Je ne sais pas si je suis très claire...
    Alors posez-moi des questions s'il vous manque des infos.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Je suis en train de me pencher sur la première solution...

    Est-il possible d'uploader une image dans un répertoire spécifique sur le serveur par un formulaire en php ?

  8. #8
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Citation Envoyé par Saphir09 Voir le message
    Toujours la même erreur...

    J'aimerai essayer la deuxième solution que tu proposes.
    Mais comment dois-je m'y prendre ?
    ça fera toujours la même erreur si le fichier n'est pas un jpg, par exemple. D'ailleurs, je me suis trompé, il faut indiquer "JPG" ou "JPEG". (bref, faut aller lire le manuel de FPDF )

    Pour cette solution, il faudrait passer par file_put_contents() et bien gérer les dossiers

    Citation Envoyé par Saphir09 Voir le message
    Je suis en train de me pencher sur la première solution...

    Est-il possible d'uploader une image dans un répertoire spécifique sur le serveur par un formulaire en php ?
    Tout à fait, il existe un tuto sur développez : http://antoine-herault.developpez.co...ls/php/upload/
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci de ton aide et pour le lien.

    Je ne stocke plus mes images dans la base de données au format blob. Je ne stocke plus que le chemin de l'image en ayant ulpoader celle-ci avant

    Du coup, plus de blob et plus de problème pour mon PDF

  10. #10
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Voilà, ça c'est le "vraie" solution

    Par contre, n'hésite pas à commenter ton code pour indiquer comment tu as géré les dossiers / nom de fichiers / etc.

    Car si tu y reviens dans 6 mois, tu auras oublié et c'est super galère à repérer
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  11. #11
    Membre actif
    Homme Profil pro
    DSI interne
    Inscrit en
    Juin 2011
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DSI interne
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2011
    Messages : 197
    Points : 290
    Points
    290
    Par défaut
    Peut être apporter une réponse à la question initiale qui n'a pas été résolu (certes un an après mais si d'autres tombent dessus...).

    La question était comment "Afficher une image BLOB sur PDF".

    affiche_image.php

    Page servant à afficher l'image BLOB à partir de son id, on récupère le code binaire de l'image ainsi que son extension.

    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
    $id = intval($_GET['show']);
     
        $result = mysql_query("SELECT ext, UNIX_TIMESTAMP(image_date), donnee
                                 FROM images
                                WHERE img_no=".$id." LIMIT 1");
     
        if (mysql_num_rows($result) == 0)
            die('pas d image');
     
        list($ext, $image_time, $data) = mysql_fetch_row($result);
     
        header('Content-Length: '.strlen($data));
        header("Content-type: image/{$ext}");
     
        echo $data;
        exit();
    Page PDF

    Via la librairie FDPF, on trouve le manuel de la fonction Image.

    C'est écrie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Insère une image dynamique à partir d'une URL
    $pdf->Image('http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World',60,30,90,0,'PNG');
    Donc il suffit de faire la même opération pour notre image BLOB en insérant l'URL absolue de notre fichier affiche_image.php.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdf->Image('http://localhost/affiche_image.php?show=1',60,30,90,0,'JPG');
    Et voilà !
    "Beatus qui prodest quibus potest"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FPDF] Afficher image BLOB (stockée dans BDD) dans un pdf
    Par chantaussel dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 08/07/2014, 20h52
  2. Afficher une image BLOB sur une page JSP
    Par yacne dans le forum JPA
    Réponses: 2
    Dernier message: 29/08/2012, 15h24
  3. Enregistrer un champ image BLOB sur disque
    Par dimah77 dans le forum Débuter
    Réponses: 1
    Dernier message: 22/06/2009, 15h12
  4. Fpdf et image blob
    Par Félix62 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/02/2009, 07h48

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