Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PDF
PDF Forum d'entraide sur la gestion dynamique de documents PDF avec PHP. Exemples : PDFLib, eZPdf, PhpToPdf... Avant de poster -> FAQ PDF et Cours PDF
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 24/02/2011, 11h02   #1
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
Par défaut 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 :
require_once ('/lib/tcpdf/tcpdf.php');

// Création d'un nouveau document PDF
Code php :
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
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 11h59   #2
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 139
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 139
Points : 2 884
Points : 2 884
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..)
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 14h13   #3
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
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.
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 14h30   #4
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 139
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 139
Points : 2 884
Points : 2 884
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 ?
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 24/02/2011, 14h44   #5
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
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');
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 14h46   #6
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 139
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 139
Points : 2 884
Points : 2 884
Ton require n'est pas bon, tu cherches un dossier lib/ dans le dossiers views/.

Utilises ceci :
Code :
require_once('../../../../../lib/tcpdf/tcpdf.php');
ou ceci (si ton include_path est correct) :
Code :
require_once('/lib/tcpdf/tcpdf.php');
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 24/02/2011, 14h55   #7
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
Merci, mais avec le chemin:

Code php :
require_once('../../../../../lib/tcpdf/tcpdf.php');


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

Citation:
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 :
require_once('../../lib/tcpdf/tcpdf.php');

Je ne comprends pas?
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 16h03   #8
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 139
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 139
Points : 2 884
Points : 2 884
Oups :
Code :
require_once('../../../../../../lib/tcpdf/tcpdf.php');
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 16h06   #9
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
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.."

???
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 18h39   #10
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 139
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 139
Points : 2 884
Points : 2 884
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.
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 12h18   #11
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
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?
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 16h17   #12
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 139
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 139
Points : 2 884
Points : 2 884
Que contient ton fichier PDF lorsque tu l'ouvres avec un éditeur de texte ?
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 10h08   #13
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
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 :
1
2
3
$this->_helper->viewRenderer->setNoRender(true);
	 $this->_helper->layout->disableLayout();
	 $this->getResponse()->setHeader('Content-type','application/pdf');
Merci encore pour ton aide!
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web