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

Langage PHP Discussion :

Affichage image blob avec DOMPDF


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Directeur Technique Backoffice
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur Technique Backoffice

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 44
    Points
    44
    Par défaut Affichage image blob avec DOMPDF
    Bonjour à tous,

    Je rencontre un petit problème avec l'insertion d'images stockées en base (oracle) dans un champ de type BLOB sur un pdf généré par DOMPDF.

    Je n'ai pas de problème pour afficher les images blob sur une page html mais lorsque je génère le pdf, je n'ai pas l'image.

    Mon code pour afficher l'image est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<img src="./photo.php?id='.$value['ID'].'" />';
    Et le code de photo.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
     
    <?php
    if(isset($_GET['id'])){
    	require_once("./inc/fonctions.php");
     
    	try{		
    		$stmt = $pdo->prepare("SELECT TITRE, IMAGE, NOM_FICHIER FROM TB_PHOTOS WHERE ID = ?");
    			$stmt->execute(array($_GET['id']));
    			$stmt->bindColumn(1, $titre, PDO::PARAM_STR, 256);
    			$stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
    			$stmt->bindColumn(3, $nom, PDO::PARAM_STR, 256);
    		$stmt->fetch(PDO::FETCH_BOUND); 
     
    		header("Content-type: application/force-download");
    		header('Content-Disposition: attachment; filename="'.$nom.'"');
    		header('Pragma: no-cache');
    			fpassthru($lob);
    	}
        catch(PDOException $e){
            $message = "Erreur! : " .$e->getMessage();   
            echo $message;
        }		
    }
    ?>
    Je ne sais pas comment faire pour insérer directement l'image dans le code DOMPDF. J'ai imaginé faire un "préchargement" des images en les enregistrant d'abord sur le disque puis d'insérer le lien temporaire dans le DOMPDF avant de le supprimer mais je ne sais pas non plus comment faire ...

    Avez-vous une idée de la marche à suivre pour faire ce genre de chose?

    Merci à vous

  2. #2
    Membre du Club
    Homme Profil pro
    Directeur Technique Backoffice
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur Technique Backoffice

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 44
    Points
    44
    Par défaut
    Autocorrection... je post cependant, ca peut toujours servir à quelqu'un d'autre.

    1- J'ai changé ma version de DOMPDF, j'étais en 0.5.2 (""stable""), je suis passé en 0.6.0_beta3
    2- Je n'utilise pas le fpassthru mais file_put_contents pour générer dans un premier temps le fichier "plat" avant de le supprimer (après édition bien entendu).

    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
     
    define("FILE_PUT_CONTENTS_TEMP", "./cache");
     
    $dompdf = new DOMPDF();
     
    // TRAITEMENT ...
    $html = 'debut';
     
    $stmt = $pdo->prepare("SELECT TITRE, IMAGE, NOM_FICHIER FROM P2C_PROCEDURES_PHOTOS WHERE ID = ?");
    			$stmt->execute(array($value['ID']));
    			$stmt->bindColumn(1, $titre, PDO::PARAM_STR, 256);
    			$stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
    			$stmt->bindColumn(3, $nom, PDO::PARAM_STR, 256);
    		$stmt->fetch(PDO::FETCH_BOUND); 
    		file_put_contents(FILE_PUT_CONTENTS_TEMP.'/'.$nom, $lob);
     
    		$html .= '<p>';
    		$html .= '<img src="'.FILE_PUT_CONTENTS_TEMP.'/'.$nom.'" />';
    		$html .= '<br />'.$value['TITRE'];
    		$html .= '</p>';
     
    // TRAITEMENTS ...
     
    $dompdf->load_html($html);  
    $dompdf->set_paper("a4", "portrait"); 
    $dompdf->render();
    $nom_fichier = 'fichier.pdf';
    $dompdf->stream($nom_fichier, array("Attachment" => true));
     
    unlink(FILE_PUT_CONTENTS_TEMP.'/'.$nom);

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

Discussions similaires

  1. [MySQL] Affichage d'image blob avec PHP
    Par minichips dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/03/2014, 16h44
  2. affichage image BLOB
    Par Alex63530 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/10/2012, 12h03
  3. affichager image aléatoire avec php
    Par saibri dans le forum Langage
    Réponses: 0
    Dernier message: 27/05/2012, 19h23
  4. [MySQL] Probleme affichage image Bdd avec firefox et co
    Par seb_dpi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/07/2011, 13h13
  5. affichage images dynamiques avec JSF
    Par saveriu dans le forum JSF
    Réponses: 0
    Dernier message: 07/12/2009, 17h28

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