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

Symfony PHP Discussion :

Afficher fichier PDF depuis une variable [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre habitué Avatar de Romanops
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2002
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 278
    Points : 165
    Points
    165
    Par défaut Afficher fichier PDF depuis une variable
    Bonjour,

    Je cherche à afficher un fichier PDF depuis une variable chaine.

    voici le code du template (consultationSuccess.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     
    echo $v_Pdf;
     
    ?>
    Le code de l'action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function executeConsultation(sfWebRequest $request)
    {
      $this->v_IdDoc = $request->getParameter('IdDocument');
      $this->o_Document = new Document();
      $this->v_Pdf = $this->o_Document->recupere_Document($this->v_IdDoc);
      $this->setLayout(false);
      $this->getResponse()->setContentType('application/pdf');
    }
    Le code pour récupérer le PDF
    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
      public function recupere_Document($p_IdDocument) {
     
        //On récupère la requête
        $v_Sql = $this->REQ_Document($p_IdDocument);
     
        //On lance la requête
        $v_Retour = $this->lance_Requete($v_Sql);
     
        //On vérifie que la requête s'est bien executée
        if($v_Retour)
        {  //si oui
     
          //debug("requête ok");
     
          //On vérifie qu'on a trouvé le document
          if($this->NbEnr>0)
          {
     
            //debug("document trouvé");
     
            //On récupère le Pdf
            $v_Pdf = $this->Data[0]["image"];  //"image" est le nom du champ dans la requête !!
     
          }
          else
          {
            //debug("Le document n'a pas été trouvé dans la base de données.");
            $v_Pdf = "";
          }
     
          //On libère la requête
          $this->libere_Requete();
     
        }
        else
        {  //si non
     
          //debug("Problème dans la requête => recupere_Document");
          $v_Pdf = "";
     
        }
     
        return $v_Pdf;
      }
    Dans mon navigateur (firefox 4 sous windows xp), je lance l'url http://localhost:8059/frontend_dev.php/document/consultation/IdDocument/11, j'ai une page blanche, avec comme titre "11 (Objet application/pdf)" (11 étant l'identifiant passé en paramètre, donc l'id du document pdf dans ma base de données) et un message d'erreur provenant de Adobe Reader :
    Le fichier ne commence pas par '%PDF-'
    Local/EWH
    J'ai vérifié le déroulement de mon code (pour la méthode recupere_Document) la variable retournée ($v_Pdf) est bien remplie avec le contenu du fichier Pdf.
    Je ne comprends pas d'où vient l'erreur...

    J'ai fait plusieurs autres tests :
    1) Je me suis dit que cela provenait du fait que je lançais l'exécution à partir de frontend_dev.php car il y a tous les codes correspondants aux débogages, j'ai donc testé en lançant la même URL mais avec index.php. Cela me donne une page blanche, sans titre et sans message d'erreur.

    2) J'ai essayé de mettre un echo $this->v_Pdf directement dans le code de l'action, même si je sais que ce n'est pas correct, c'était surtout pour tester que ma variable était bien remplie et là mon fichier Pdf s'affiche normalement. Mais bon, il me semble que tous les echo/print doivent se trouver dans le fichier template, et non dans l'action !!

    Est-ce que quelqu'un peut m'aider ?

    Merci d'avance !
    En vous remerciant, bonsoir.

  2. #2
    Membre habitué Avatar de Maerlyn31
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 71
    Points : 167
    Points
    167
    Par défaut
    Si ton affichage est bon dans l'action, mais qu'il ne l'est plus une fois passé dans le template, alors c'est surement l'Output Escaping qui te met le bazard.

    Essaie dans ton template de faire plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $sf_data->getRaw('v_Pdf');
    (désactive l'output escaping, à utiliser avec précaution bien sur )

  3. #3
    Membre habitué Avatar de Romanops
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2002
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 278
    Points : 165
    Points
    165
    Par défaut
    Oh merci beaucoup ! Cela fonctionne en effet.

    Par contre, en passant par l'index (http://localhost:8059/index.php/document/consultation/IdDocument/11) j'ai toujours une page blanche, est-ce que tu sais par hasard pourquoi ?

    D'ailleurs, pour info, j'ai aussi une page blanche sur l'action index du module document (url : http://localhost:8059/index.php/document).
    En vous remerciant, bonsoir.

  4. #4
    Membre habitué Avatar de Maerlyn31
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 71
    Points : 167
    Points
    167
    Par défaut
    ./symfony cc ?

    Tu peux essayer de changer ton contrôleur frontal pour le rendre un peu plus bavard déjà. Dans ton fichier index.php, remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', true);
    il devrait te sortir les erreurs tout en restant en environnement de prod

  5. #5
    Membre habitué Avatar de Romanops
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2002
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 278
    Points : 165
    Points
    165
    Par défaut
    Super, ça marche en mode prod maintenant ! Merci maître !

    Heu...
    ./symfony cc ?
    ça veut dire quoi ?
    En vous remerciant, bonsoir.

  6. #6
    Membre habitué Avatar de Maerlyn31
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 71
    Points : 167
    Points
    167
    Par défaut
    la commande "cc" pour "clear cache" ... quand tu as une différence d'affichage entre le mode prod et le mode dev la plupart du temps ça vient du cache, mais bon je suppose que tu avais du le faire ... heureux d'avoir pu t'aider en tout cas

  7. #7
    Membre habitué Avatar de Romanops
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2002
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 278
    Points : 165
    Points
    165
    Par défaut
    ah ok, en ligne de commande... non je ne connaissais pas mais cela venait du fait que je n'avais pas activé le mode prod (changer la ligne dans le contrôleur frontal). Désolé, je suis un débutant expérience = 1 semaine ^^'

    En tout cas, merci encore ! J'ai mis le sujet en Résolu
    En vous remerciant, bonsoir.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/07/2011, 16h30
  2. Générer un fichier PDF depuis une application?
    Par xsmokingbenx dans le forum Android
    Réponses: 0
    Dernier message: 19/04/2011, 10h51
  3. Ouvrir un fichier pdf depuis une macro
    Par Maluje dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/03/2008, 17h51
  4. Génération de fichier PDF depuis une page html
    Par leo_ip dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/06/2007, 12h51
  5. [Stratégie] Afficher des fichiers PDF depuis une base Oracle
    Par tetram51 dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 20/12/2005, 09h15

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