2009-05-12 7 views
0

J'ai passé beaucoup de temps à essayer de faire fonctionner dompdf (http://www.digitaljunkies.ca/dompdf/) mais je continue de rencontrer des problèmes. J'essaie de générer un PDF à partir d'un script PHP qui génère un formulaire web assez complexe et rempli. Le script accepte un paramètre $ _GET (numéro d'enregistrement) et remplit le formulaire en conséquence avec les données de la base de données. Je n'ai aucun problème pour obtenir ces données dans le script en tant que chaîne ou tout type de valeur vraiment. Ce que je me demande, c'est quelle serait la meilleure approche pour convertir ce type de données en format PDF?

Le flux est le suivant: l'utilisateur remplit le formulaire et est redirigé vers la page de confirmation à laquelle je souhaite ajouter un bouton "Enregistrer au format PDF". À ce stade, une des deux choses pourrait arriver, la page qui est actuellement affichée dans le navigateur pourrait être dirigée directement vers un pdf ou un appel à lui-même (scriptname.php? Id = xyz) pourrait être fait en utilisant quelque chose comme PHP http_get () fonctionne et stocke le HTML en tant que chaîne. De là, j'ai des problèmes avec la préparation d'une représentation précise en format PDF. J'ai déjà entendu parler de fpdf mais leurs exemples ne me portent pas vraiment à croire que vous pouvez utiliser les données dynamiques comme source, mais corrigez-moi si je me trompe.

Toute contribution serait appréciée.

- Nicholas

Répondre

0

Eh bien, je ne savais pas dompdf. Étrange qu'il utilise soit une bibliothèque commerciale (PDFlib) ou une bibliothèque obsolète (?) (CPDF, non mise à jour depuis 3 ans). Mais bon, tant que ça marche (le concept est intéressant). Je ne comprends pas ce que vous entendez par "utiliser les données dynamiques comme source" (ou plutôt, je ne vois pas l'intérêt de générer des PDF statiques!), Mais FPDF est utilisé pour générer divers documents dynamiques, comme les factures dans e produits de commerce J'ai vu des personnes utilisant des fourches (comme TCPDF) pour gérer les données Unicode, cependant.

Vous ne pouvez pas transformer une page HTML en PDF avec FPDF, mais vous avez un contrôle assez précis de la mise en page, en utilisant le concept de cellules avec des données.
Vous pouvez voir ce genre de code là: http://svn.prestashop.com/trunk/classes/PDF.php

0

Dans le passé face à ce problème, je l'ai utilisé FPDF pour le placement des données sur un modèle PDF. Ensuite, en définissant l'en-tête HTTP approprié, forcez le navigateur à ouvrir la boîte de dialogue Télécharger/Enregistrer sous pour que l'utilisateur puisse enregistrer ledit PDF.

Dans une classe qui étend FPDF/FPDI de façon appropriée, utilisez quelque chose comme ce qui suit pour générer un PDF à partir d'un modèle PDF que vous avez déjà créé (http://www.setasign.de/products/pdf-php-solutions/fpdi/):

$this->setSourceFile('pdf_template.pdf'); 
$template_page = $this->importPage(1, '/MediaBox'); 
$this->useTemplate($template_page, 0, 0); 

Ensuite, ont FPDF générer le PDF pour la sortie en utilisant:

$this->Output(); 

Vous pouvez également étendre FPDF à accepter (limitée) pour le formatage HTML en utilisant le script trouvé ici: http://www.fpdf.org/en/script/script41.php

Questions connexes