59 votes

Bibliothèque de modèles PDF PHP avec sortie PDF?

Est-il PHP PDF library, qui peut remplacer les variables de substitution dans un PDF, ODT ou DOCX document, et de générer un fichier PDF comme le résultat final, sans vissage jusqu'à la mise en page?

Exigences:

  • Besoins pas de 3ème partie de service web

  • Capacité à exécuter sur l'hébergement web mutualisé serait l'idéal (pas de binaire installations / packages requis)

Rappelez-vous, une bibliothèque qui est capable de charger un fichier PDF existant et insérer du texte par programmation à une position spécifique n'est pas assez pour mon cas d'utilisation.

En ce qui concerne ma recherche, il n'y a pas de bibliothèque qui peut faire ceci:

  • TCPDF ne peut que générer des documents à partir de zéro

  • FPDI pouvez lire un fichier PDF existant modèles, mais ne peut ajouter du contenu par programmation (pas de variable de modèle de remplacement)

  • Il existe différents DOCX/ODT des bibliothèques de modèles là-bas, mais ils n'ont pas de sortie PDF

PHPDOCx prétend être en mesure de faire exactement ce dont j'ai besoin - mais ils ne proposent pas une version d'essai et je ne vais pas acheter un chat dans un sac, surtout lorsqu'il semble y avoir aucun autre produit sur le web qui fait cela. J'ai du mal à croire qu'il peut le faire sans problèmes - si vous avez réussi à faire cela en utilisant le produit, merci de laisser une ligne ici.

Suis-je surplombant quelque chose?

Est-il un moyen de faire cela en utilisant les formulaires en PDF? Je suis de la création de la source de documents OpenOffice 3.

Je suis peut-être capable d'utiliser les commandes Linux (pdftk est disponible, par exemple, d'essayer immédiatement.)

Mise À Jour: *Argh!* J'ai été appelé au bureau et à la générosité expiré dans l'intervalle. Le démarrage d'une nouvelle bounty: aussi loin Que mes tests de montre, pas de solution fonctionne parfaitement pour moi encore.

Mise à jour II: je vais être à la recherche de l'pdftk approche bientôt, mais je suis aussi de commencer un bounty pour un tour de plus de recueillir des commentaires. Cette question a 1300 points de rep dans les primes, doit être une sorte de record :)

15voto

mario Points 76989

Ce n'est pas très pratique, mais pour l'exhaustivité: Si vous avez déjà un ODT modèle, alors vous pouvez très bien conserver en tant que modèle. La modification de l'OpenDocument content.xml et de remplacer les espaces réservés y est assez simple. Si oui, vous pouvez utiliser unoconv ou pyodconverter pour transformer le ODT en un fichier PDF final.

unoconv -f pdf -o final.pdf template.odt

Très évidemment, cela nécessite une installation de OpenOffice (UNO et Écrivain), sur le serveur web. Et, évidemment, pas tous les hébergeur serait aller avec ça! haha. Même si c'est simple sur n'importe quel Debian ou Fedora de l'installation. La vitesse d'exécution ne serait probablement pas être stellaire. Mais alors il pourrait être le plus propre approche, depuis OOo régit à la fois les formats de façon mieux que n'importe quelle classe PHP.

13voto

Orbling Points 13319

Pekka,

J'ai regardé dans ce précédemment, je pense que vous pouvez utiliser pdftk (un utilitaire de ligne de commande), de remplir un formulaire PDF à l'aide de FDF/XFDF fichiers de données, vous pouvez facilement générer à partir de l'intérieur de PHP. C'était la meilleure option que j'ai vu jusqu'à présent, mais il se peut bien être une bibliothèque native.

pdftk est très utile en général, mérite un coup d'œil.

Mise à jour: jetez un oeil ici: http://php.net/manual/en/book.fdf.php

7voto

Gordon Points 156415

Vous navez pas effectuer gratuitement une exigence, donc, je vais suggérer LiveDocX. Ils ont une option gratuite, mais elle ne répond pas à votre non pas un 3ème partie exigence, ce qui signifie que vous auriez à server-licence).

Il est aussi ZF paquet pour cette:

5voto

CaseySoftware Points 2498

Avez-vous envisagé d'utiliser quelque chose comme XSL:Objets de mise en forme (XSL:FO)? Ce sont des documents XML qui sont traitées et transformées en fichiers Pdf. Faire de chaîne - ou, mieux, dans les DOM - remplacements à l'intérieur qui doit être assez simple. Il prend en charge l'incorporation des images, des liens, des annotations, etc.

Ce n'est pas PHP mais il y a un certain nombre de PHP wrappers pour vous, avec les moyens de l'utiliser via exec, etc. Pas l'idéal, mais il prend soin de le modèle de partie complètement. Pour plus d'info: http://techportal.inviqa.com/2009/12/16/transforming-xml-with-php-and-xsl/

Il y a une implémentation est disponible comme un projet Apache - http://xmlgraphics.apache.org/fop/

3voto

Marc B Points 195501

Ce ne sera pas répondre à vos "pas de binaire" le mandat, mais PDFlib a un beau système de template à l'aide de "blocs", qui sont PDFlib spécifiques des métadonnées, vous pouvez "tirer" en un fichier PDF avec Acrobat plugin, puis par programmation à remplir au moment de l'exécution avec un seul appel de fonction par bloc. Les blocs peuvent être du texte (avec des pseudo-html pour la simple mise en forme du texte de face à la police/taille/couleur), des images (plus tout ce qui peut être affiché dans un PDF), et les Pdf eux-mêmes, de sorte que vous pouvez incorporer l'ensemble des autres documents ou extraits de documents dans un bloc.

Il peut le faire à partir d'un pré-document PDF existant (charger, insérer du contenu/bloc d'alimentation/etc.., sortie), ou de construire un nouveau fichier PDF à partir du sol (sérieusement douloureux de le faire par programmation, mais possible).

J'ai utilisé les blocs avec succès pour générer un simple système de template pour un client, où ils peuvent dessiner des blocs dans un document avec des petits morceaux de métadonnées incorporées, qui a ensuite été analysée côté serveur pour générer un formulaire pour demander des données à insérer dans les blocs au moment de la génération du document.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X