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 :

[PDF] Génération PDF avec TCPDF


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut [PDF] Génération PDF avec TCPDF
    Bonjour à tous,

    je viens de découvrir TCPDF et essaye donc de générer un PDF mais je rencontre un problème lors de l'ouverture de ce fichier après sa création.

    Je développe en PHP en utilisant le framework Zend.

    Code:

    // Librairie TCPDF
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once ('/lib/tcpdf/tcpdf.php');

    // Création d'un nouveau document PDF
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $pdf = new TCPDF('P', 'pt', 'A4', true, 'UTF-8', false);
    $pdf->setPrintHeader(false);
    $pdf->setPrintFooter(false);
    $pdf->SetFont('helvetica','',10);
    $pdf->AddPage();
    $html = "<p>Hello world</p>";
    $pdf->writeHTML($html, true, 0, true, 0);
    $pdf->Output('test.pdf', 'D');

    Une fois le document crée, lors de son ouverture je n'arrive pas à le lire et j'ai le message d'erreur suivant qui s'affiche:
    Adobe Reader n'a pas pu ouvrir fichier.pdf, car le type de fichier n'est pas pris en charge ou le fichier est endommagé (il a été envoyé en tant que pièce jointe et n'a pas été décodé correctement, par exemple)

    Pourriez vous m'indiquer d'où peut provenir le problème?
    Merci d'avance

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Cela peut venir de caractères non désirables situées avant ou après l'execution de ton script (un espace avant l'ouverture de la balise PHP, après etc..)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Merci ThomasR pour cette réponse rapide mais je ne trouve pas de caractères non désirables (ni espaces avant balises php) mais comme je travaille sur Zend Studio j'ai un "Warning: class TCPDF not found" au niveau de la ligne où je crée mon pdf:
    $pdf = new TCPDF(...);

    Penses-tu que le problème viendrait de là?
    Si oui comment y résoudre car mon require_once fonctionne bien sinon j'aurais un message d'erreurs à ce niveau là?

    Merci d'avance pour ton aide.

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Oui l'erreur vient de là, il fallait le préciser dès le début

    Cela signifie que le chemin /lib/tcpdf/tcpdf.php n'existe pas, existe-t-il réellement un dossier lib/ à la racine de ton serveur web (www/lib ?).

    Je pense que tu voulais écrire lib/tcpdf/tcpdf.php (sans le premier "/" au début).

    Sinon, où se situe le fichier tcpdf.php par rapport à ton fichier qui contient le new TCPDF ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Oui il existe bien un dossier lib à la racine de mon serveur qui contient le répertoire tcpdf dans lequel est inclus le fichier tcpdf.php.

    Lorsque je teste en écrivant lib/tcpdf/tcpdf.php (sans le premier "/" au début), j'ai un message d'erreur: "failed to open stream: No such file or directory in...".

    Voilà donc:
    -le fichier tcpdf.php se trouve dans: www/lib/tcpdf/tcpdf.php
    -le script qui contient "new TCPDF()" est sendPDF.phtml qui se situe dans: www/mon_projet/application/views/scripts/test/sendPDF.phtml

    et le require que je fais dans mon script sendPDF.phtml est:
    require_once('../../lib/tcpdf/tcpdf.php');

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Ton require n'est pas bon, tu cherches un dossier lib/ dans le dossiers views/.

    Utilises ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once('../../../../../lib/tcpdf/tcpdf.php');
    ou ceci (si ton include_path est correct) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once('/lib/tcpdf/tcpdf.php');

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Merci, mais avec le chemin:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once('../../../../../lib/tcpdf/tcpdf.php');


    ça ne fonctionne toujours pas et m'indique la même erreur que précédemment:

    Warning: require_once('../../../../../lib/tcpdf/tcpdf.php'); [function.require-once]: failed to open stream: No such file or directory in /var/www/mon_projet/application/views/scripts/test/sendpdf.phtml on line 5
    En revanche je n'ai pas ce message d'erreurs quand je fais:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once('../../lib/tcpdf/tcpdf.php');

    Je ne comprends pas?

  8. #8
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Oups :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once('../../../../../../lib/tcpdf/tcpdf.php');

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    non ça ne fonctionne pas, et toujours le même warning dans mon script au niveau de la création du pdf et le même message d'erreurs:

    "failed to open stream: No such file or directory in.."

    ???

  10. #10
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Soit les chemins que tu m'as donné ne sont pas bons, soit la casse des caractères est incorrecte sur les noms de dossier et le nom de fichier.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Merci pour ta réponse, j'ai modifié mes chemins en créant un lien symbolique vers la librairie tcpdf, je n'ai plus le "warning : class TCPDF not found".
    Cependant, lorsque j'essaye d'ouvrir le fichier pdf crée je n'y arrive pas et j'ai le même message d'erreur:
    Adobe Reader n'a pas pu ouvrir fichier.pdf, car le type de fichier n'est pas pris en charge ou le fichier est endommagé (il a été envoyé en tant que pièce jointe et n'a pas été décodé correctement, par exemple)

    Je ne vois pas d'ou peut provenir le problème j'ai même essayé d'afficher une page pdf vide mais j'ai toujours la même erreur?

  12. #12
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Que contient ton fichier PDF lorsque tu l'ouvres avec un éditeur de texte ?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Bonjour Thomas,

    j'ai trouvé la solution à mon problème.
    J'utilise le framework Zend et le modèle MVC pour mes développement, donc lors de la génération de mon pdf, le contenu du layout et de ma vue viennent s'intégrer au contenu de mon doc pdf, il y a donc des caractères "bizarres" que Adobe reader ne reconnait pas lorsqu'il essaye d'afficher ma page.
    Pour résoudre ce problème j'ai réorganisé mon code (MVC) et ajouter les lignes de commandes suivantes dans mon contrôleur pour empêcher le layout et la vue de s'afficher dans ma page pdf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $this->_helper->viewRenderer->setNoRender(true);
    	 $this->_helper->layout->disableLayout();
    	 $this->getResponse()->setHeader('Content-type','application/pdf');
    Merci encore pour ton aide!

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

Discussions similaires

  1. [PDF] Génération PDF avec TCPDF
    Par bza88 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 17/05/2019, 19h25
  2. Génération automatique de PDF avec Win2PDF
    Par cdelefil dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 03/10/2007, 11h01
  3. [FPDF] génération de pdf avec Fpdf sous firefox
    Par discogarden dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 08/06/2006, 10h50
  4. [FPDF] Génération de fichiers PDF avec PHP
    Par deY! dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 10/04/2006, 17h06
  5. [FPDF] génération d'attestation en PDF avec PHP
    Par moabomotal dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/03/2006, 13h50

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