9
votes

HTML à PDF vs. Création de PDF par programme via PHP

J'ai une application PHP qui doit générer des factures PDF et des feuilles de temps de PDF avec de belles en-tête / pieds de page. Certains utilisateurs Stackoverflow recommandent d'utiliser TCPDF pour créer les documents PDF. Dans mes recherches, j'ai découvert deux approches pour générer des fichiers PDF:

1) Formatage par programmation du PDF, comme: P>

    $tcpdf->SetFillColor(255, 0, 0);
    $tcpdf->SetTextColor(255);
    $tcpdf->SetDrawColor(128, 0, 0);
    $tcpdf->SetLineWidth(0.3);
    $tcpdf->SetFont('', 'B');


2 commentaires

Voici un bon tutoriel que je crois vous aiderait définitivement à vous aider Tutoriel sur la création de fichiers PDF de manière dynamique dans les sites Web


Le lien ci-dessus semble être rassis maintenant.


6 Réponses :


3
votes

Je recommande toujours de créer des PDF de manière dynamique mais basée sur des modèles pouvant être modifiés à l'aide d'outils utilisateur final ou - au moins - sans avoir à être programmeur. Dans votre cas, ce serait probablement le HTML. Pour moi, la solution idéale est de prendre un modèle de bureau, de le remplir de valeurs de manière programmatique et de la sortie au format PDF, chaque fois que possible. Je fais le modèle de bureau qui remplit une pièce de remplissage de PHP en utilisant TBSOOO et ça fonctionne assez bien.

raison principale de l'utilisation d'une approche de modèle sur la génération du document à partir de zéro: l'utilisateur peut concevoir le modèle au fur et à mesure qu'ils voient en forme, et vous ne serez pas nécessaire lorsque la conception doit être modifiée. (Et c'est aura besoin de changer un jour.) Seulement lorsque les données insérées doivent être modifiées ou étendues d'une manière ou d'une autre, le programmateur entre en jeu. C'est une vaste charge de travail de votre dos.


0 commentaires

2
votes

Je peux recommander Zend_pdf , qui est une méthode programmatique selon à votre classification.

Une abstraction HTML est agréable mais je ne crois pas que vous ayez la pleine puissance et le contrôle d'une API de dessin à base de géométrie complète. Soyez méfiant des bibliothèques telles que FPDF qui ne prennent pas en charge UTF-8 hors de la boîte et utilisez un analyseur d'un homme pauvre pour «convertir» HTML en PDF.

En ce qui concerne votre application, j'ai produit un système qui génère des factures modèles. Mes utilisateurs peuvent télécharger un modèle PDF, qui est extraite par Zend_PDF. Ce modèle est ensuite utilisé pour chaque page de la facture générée, permettant une personnalisation facile.

Notez que mon public est principalement des graphistes capables de produire ces modèles, il s'agissait donc de la solution appropriée ici. Si votre public ne connaît que HTML, "Convertir" HTML en PDF pourrait être le meilleur moyen.


2 commentaires

Le lien est cassé


Zend_pdf est abandonné - Github.com/zendframework/zendpdf - et ils recommandent TCPDF comme remplacement.



0
votes

Je recommande également de convertir HTML en PDF:

  • Il est plus facile de réaliser
  • Il est plus facile de changer la mise en page / la conception ultérieure
  • Vous pouvez probablement réutiliser du code HTML de la page

    Lorsque j'ai créé une fois une génération PDF pour un site Web, j'ai utilisé HTML2PS puis converti le PostScript en PDF plus tard.


0 commentaires

1
votes

Bonjour, vous avez deux options. Vous pouvez utiliser DOMPDF , ce qui vous permet de concevoir votre document En tant que document HTML régulier et style avec CSS. Vous pouvez transformer ce document en PDF. Mes expériences étaient bonnes. Je rends une page HTML régulière à l'aide de Zend_View et mettez ceci en PDF. De cette façon, vous avez un modèle extrêmement flexible, Beacuse, vous pouvez faire toutes sortes de décisions d'affichage dans votre vue génératrice HTML.

→ voir le Liste de CSS-Compatibilité .

Alternativement vous pouvez utiliser Livedocx . Cela permet également une approche basée sur des gabarits, mais plus rigidement et plus HTML. A Intégration pour Zend Framework est sur son chemin. < / p>


0 commentaires

0
votes

Je suggère le formatage programmatique.

Dans le monde .NET, j'ai eu des expériences distinctement négatives avec des convertisseurs HTML aux PDF. Ils semblent tomber dans 2 catégories:

Ceux qui "analysent" votre HTML et tentent de la transformer en PDF. Ceux-ci manquent souvent de certaines caractéristiques vraiment fondamentales telles que des feuilles de style et de soutien à tout sauf la mise en page à base de table.

Ceux qui "impriment" votre HTML à une image et collent cela dans un PDF. Celles-ci peuvent réellement produire un document décent. Ils semblent travailler en reliant un navigateur dans la bibliothèque qui provoque des problèmes de filetage et des performances médiocres.

J'ai eu des expériences médiocres avec API PDF directe, mais PHP semble avoir des bibliothèques significativement meilleures sur ce front.


1 commentaires

Ceci est complètement différent pour le monde PHP en effet. Les bibliothèques programmatiques comme Zend_PDF sont celles qui sucent. Comme je l'ai recommandé, DompDF est très bon en HTML au PDF. Il ne lient pas un navigateur dans la bibliothèque ou de telle substance (personne n'oserait même y penser)



1
votes

J'ai eu une expérience ample avec les trois approches:

  1. Création du document par programmation à l'aide de TCPDF (qui, bien qu'il soit dérivé de FPDF, prend en charge UTF-8 hors de la boîte). Bien que je sois un grand fan de Fan of Zend Cadre, il faut noter que Zend_PDF n'est pas assez riche dans sa fonction pour être utilisée de cette manière.

  2. Avoir un graphiste Créez un modèle, en chargement en utilisant zend_pdf, puis en ajoutant un contenu supplémentaire. Zend_pdf (1.10.2 - 1.10.7) a travaillé assez bien dans ce cas, sauf lorsque vous essayez d'instancier une nouvelle page et de l'ajouter au document - cela a jeté des charges d'erreurs.

  3. Conversion de HTML en PDF à l'aide de HTMLDOC. Cette approche a mal sucé, mais principalement en raison de limitations de HTMLDOC.

    Je n'ai pas utilisé TCPDF pour la conversion HTML vers PDF, mais à en juger par la qualité globale du code, je suppose que cela ferait un bon travail. (J'ai vraiment poussé TCPDF aux limites, y compris rendu des documents riches graphiquement dans des ensembles de caractères RTL, chinois, etc., et il a effectué sans faille). Donc, si vous décidez de le faire de manière programmatique, je vous recommanderais d'utiliser TCPDF, mais si vous avez un beau modèle d'un graphiste et que vous souhaitez simplement ajouter des trucs sur le dessus, le charger avec zend_pdf et modifier à partir de là un choix raisonnable (bien que Vous finirez toujours de mettre en œuvre un emballage de mots et d'autres autres éléments de base).


0 commentaires