Maison >développement back-end >tutoriel php >PHP Master | Convertir HTML en PDF avec DOMPDF

PHP Master | Convertir HTML en PDF avec DOMPDF

Lisa Kudrow
Lisa Kudroworiginal
2025-02-23 10:36:11782parcourir

PHP Master | Convertir HTML en PDF avec DOMPDF

PDF est un format standard créé à l'origine par Adobe pour représenter du texte et des images dans un document à relais fixe. Il n'est pas rare qu'une application Web prenne en charge les données de téléchargement, telles que des factures ou des rapports, au format PDF, donc dans cet article, nous allons expliquer comment nous pouvons facilement générer des documents PDF à l'aide de PHP. DOMPDF est une excellente bibliothèque, capable de générer un PDF à partir des styles HTML BUKUP et CSS (il est principalement conforme à CSS 2.1 et a pris en charge certaines propriétés CSS3). Nous pouvons décider à quoi devrait ressembler notre contenu en utilisant ces technologies familières, puis convertir facilement en un document fixe. La bibliothèque a également de nombreuses autres fonctionnalités utiles et intéressantes.

Les plats clés

  • DOMPDF est une bibliothèque PHP qui peut convertir les styles de balisage HTML et CSS en document PDF, ce qui le rend utile pour les applications Web qui doivent prendre en charge le téléchargement des données au format PDF.
  • Pour utiliser DOMPDF, il doit être installé via GitHub ou Composer, et il nécessite PHP> = 5.0 avec les extensions MBSTring et DOM activées. Le balisage HTML peut être chargé sous forme de chaîne ou à partir d'un fichier ou d'URL, puis rendu dans un PDF.
  • DOMPDF fournit une gamme d'options de configuration pour adapter le PDF à des besoins spécifiques, tels que la taille du papier, l'orientation de la page et le codage des caractères. Il permet également une utilisation avancée, tel que la sauvegarde du PDF généré sur le disque, ou l'ajout d'en-têtes ou de pied de page.
  • Bien que DOMPDF soit un outil puissant, il a certaines limites, comme être intolérants à un HTML mal formé et n'ayant un support limité pour CSS3. Il est recommandé de revoir la documentation et le code source de la bibliothèque pour une compréhension complète de ses capacités et de ses problèmes potentiels.

Pour commencer

DOMPDF est disponible sur GitHub et peut être installé à l'aide du compositeur. Obtenir une installation basée sur des compositeurs correctement correctement est encore un peu délicat, donc je recommande simplement d'utiliser GIT pour installer DOMPDF. La bibliothèque nécessite PHP> = 5.0 avec les extensions MBSTring et DOM activées. Il a également besoin de quelques polices, qui sont généralement disponibles sur la plupart des machines. Accédez à partout où vous souhaitez mettre la bibliothèque et exécuter:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
Avec DOMPDF téléchargé, écrivons un court exemple qui générera un PDF simple.
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
Pour utiliser la bibliothèque dans un projet, nous appuyons d'abord dans DOMPDF_CONFIG.INC.PHP qui contient la majeure partie de la configuration DOMPDF. Il charge également un Autoloader et un fichier de configuration personnalisé dans lequel nous pouvons remplacer les paramètres de configuration par défaut. Le balisage HTML est donné en tant que chaîne à la méthode LOAD_HTML (). Alternativement, nous pouvons charger un balisage à partir d'un fichier ou d'une URL à l'aide de la méthode LOAD_HTML_FILE (). Il accepte un nom de fichier ou l'URL d'une page Web comme argument. La méthode render () rend le HTML en PDF et nous sommes prêts à vider le fichier PDF. Stream () envoie le PDF résultant en tant que pièce jointe au navigateur. La méthode Stream () a un deuxième paramètre en option, un tableau d'options:
  • Accept-Ranges - Boolean, Endire «Accept-Ranges» (False par défaut).
  • Pièce jointe - Boolean, envoyez un en-tête «contenu-disposition: pièce jointe» forçant le navigateur à afficher une invite de sauvegarde (vrai par défaut).
  • Compress - booléen, activer la compression de contenu (vrai par défaut).
Nous avons généré un PDF très simple ici, mais ce n'est pas très pratique. En réalité, nous aurons souvent des exigences concernant la taille du papier, l'orientation des pages, le codage des caractères, etc. Il existe un nombre d'options de configuration que nous pouvons définir pour rendre DOMPDF plus adapté à nos besoins réels. Tous sont répertoriés et expliqués dans DOMPDF_CONFIG.INC.PHP qui les définit sur leurs valeurs par défaut. Vous pouvez modifier ces valeurs en mettant à jour le fichier de configuration personnalisé DOMPDF_CONFIG.Custom.inc.php. Certains des paramètres importants sont:
  • DOMPDF_DEFAULT_PAPER_SIZE - Définit la taille du papier par défaut pour le document PDF. Les tailles de papier prises en charge peuvent être trouvées dans include / cpdf_adapter.cls.php (la valeur par défaut est «Lettre»).
  • DOMPDF_TEMP_DIR - Spécifie le répertoire temporaire utilisé par DOMPDF. Assurez-vous que cet emplacement est écrite par le compte du serveur Web.
  • DOMPDF_UNICODE_ENABLE - Définit si le PDF utilise des polices Unicode (la valeur par défaut est vraie).
  • DOMPDF_ENABLE_REMOTE - Permet l'inclusion d'images ou de styles CSS à partir de sites distants (la valeur par défaut est fausse).
  • DEBUG_LAYOUT - Que ce soit pour rendre une boîte autour de chaque bloc HTML dans le fichier PDF, ce qui est utile pour déboguer la mise en page (la valeur par défaut est fausse).

Utilisation avancée

Parlons maintenant de certaines utilisations avancées de DOMPDF. Peut-être que nous voulons enregistrer le document PDF généré sur le disque au lieu de l'envoyer au navigateur. Voici comment:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
Au lieu d'appeler Stream () comme dans l'exemple précédent, nous utilisons la sortie () qui renvoie le PDF en tant que chaîne. Il accepte également un tableau d'options facultatifs, mais la seule option disponible est compresse (la valeur par défaut est vraie). DOMPDF nous permet également d'ajouter un en-tête ou un pied de page au PDF généré en intégrant un script PHP dans le HTML qu'il rend. Mais parce que le traitement du code arbitraire peut poser un risque de sécurité si vous ne faites pas attention, la valeur de configuration qui contrôle cette fonctionnalité est désactivée par défaut. Nous devons d'abord définir l'option DOMPDF_ENABLE_PHP true. Une fois que nous aurons activé l'exécution de PHP en ligne, l'objet PDF sera mis à disposition dans le script, que nous pouvons utiliser pour manipuler la page. Nous pouvons ajouter du texte, des lignes, des images, des rectangles, etc. n'importe où à l'intérieur de la page.
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
Le script est intégré directement dans le balisage HTML et ouvre d'abord un objet afin que nous puissions affecter le rendu. Tous les dessins seront enregistrés dans cet objet et nous pouvons ajouter cet objet à toutes les pages ou sélectionnées (bien qu'il y ait des limitations). Ensuite, nous récupérons la largeur et la hauteur réelles de la page pour calculer les coordonnées du pied de page que nous avons l'intention d'ajouter. De plus, nous devons fournir un objet de police pendant que nous ajoutons le contenu du texte. Font_metrics :: get_font () nous permet de créer l'objet dont nous avons besoin. Nous prenons également la hauteur de la police donnée à sa taille de police en utilisant get_font_height () pour calculer le positionnement du contenu du pied de page. La méthode get_font_width () renvoie la largeur de notre texte pour la police et la taille données qui sont également utilisées dans nos calculs. La méthode line () tire une ligne du point (x1, y1) à (x2, x2). Notez que la valeur de couleur que nous avons fournie n'est pas une valeur RVB réelle. La classe PDF sous-jacente nécessite des valeurs entre 0 et 1 et nous convertissons donc les valeurs RVB en ces nouvelles valeurs. Pour obtenir une meilleure approximation, vous pouvez le diviser par 255. Nous ajoutons le numéro de page pour chaque page à l'aide de la méthode page_text (), qui accepte une position x et y, le texte à ajouter, un objet de police, une taille de police et une couleur. DOMPDF remplace automatiquement les valeurs de {page_num} et {page_count} dans chaque page, et rend $ pdf à notre disposition. Lorsque le PDF sera rendu, la section de pied de page ressemblera à ceci:

PHP Master | Convertir HTML en PDF avec DOMPDF

Il est possible d'éviter d'utiliser des PHP en ligne et d'obtenir le même effet directement à partir de PHP, comme ainsi:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
Notez que nous plaçons le code après avoir appelé $ dOMPDF-> render () car nous modifions essentiellement le PDF rendu.

Conclusion

Dans cet article, nous avons discuté de la façon de convertir facilement le HTML en PDF à l'aide de DOMPDF. Bien que DOMPDF soit une excellente bibliothèque, ce n'est pas une solution pare-balles pour générer des documents PDF; Il a certaines limites et problèmes. DOMPDF n'est pas vraiment tolérant à la HTML mal formée, et les grandes tables peuvent facilement vous faire manquer de mémoire. Certaines fonctionnalités CSS de base comme Float ne sont pas complètement prises en charge et il n'y a qu'une prise en charge limitée pour CSS3. Si vous avez besoin de fonctionnalités qui ne sont pas prises en charge par DOMPDF, quelque chose comme WKHTMLTOPDF pourrait être une meilleure solution pour vous. Pourtant, DOMPDF est assez simple et adapté à la majorité des besoins d'exportation PDF. Il est vraiment difficile d'expliquer toutes les fonctionnalités fournies par une bibliothèque dans un article comme celui-ci, alors assurez-vous de consulter la documentation et le code source également pour en savoir plus sur les fonctionnalités sympas comme l'ajout de rappels, en utilisant des polices personnalisées, etc. «Je suis heureux de vous aider dans mon expertise limitée. N'hésitez pas à laisser vos questions et à partager vos expériences dans la section des commentaires. Image via Fotolia Et si vous avez aimé lire ce post, vous aimerez l'apprentissage; L'endroit pour acquérir de nouvelles compétences et techniques de la maîtrise. Les membres ont un accès instantané à tous les livres électroniques de SitePoint et aux cours en ligne interactifs, comme Jump Start Php. Les commentaires sur cet article sont fermés. Vous avez une question sur PHP? Pourquoi ne pas le demander sur nos forums?

Les questions fréquemment posées (FAQ) sur la conversion de HTML en PDF avec DOMPDF

Qu'est-ce que DOMPDF et pourquoi est-il utilisé?

DOMPDF est une bibliothèque PHP qui fournit un moyen simple de convertir HTML en PDF. Il est utilisé car il peut gérer des dispositions HTML complexes, y compris les styles CSS, JavaScript et les images. C'est un outil puissant pour les développeurs qui ont besoin de générer des documents PDF à partir de contenu HTML. Il est facile à utiliser, flexible et peut être intégré à n'importe quelle application PHP.

Comment installer DOMPDF?

DOMPDF peut être installé à l'aide de Composer, un outil de gestion des dépendances pour PHP. Vous pouvez installer Composer, puis exécuter la commande «Composer nécessite DOMPDF / DOMPDF». Cela téléchargera et installer la bibliothèque DOMPDF dans votre projet.

Puis-je utiliser CSS avec DOMPDF?

Oui, DOMPDF prend en charge CSS. Vous pouvez utiliser CSS en ligne dans votre HTML, ou vous pouvez créer un lien vers un fichier CSS externe. DOMPDF appliquera les styles lors de la génération du PDF. Cependant, veuillez noter que toutes les propriétés CSS ne sont pas prises en charge.

comment puis-je ajouter des images à mon PDF?

Vous pouvez ajouter des images à votre PDF en incluant une balise `` IMG '' dans votre HTML . L'attribut «src» doit pointer vers le fichier image. DOMPDF inclura l'image dans le pdf généré.

Puis-je générer un PDF avec plusieurs pages?

Oui, DOMPDF peut générer un PDF avec plusieurs pages. Si votre contenu HTML est suffisamment long pour s'étendre sur plusieurs pages, DOMPDF le divisera automatiquement en pages. Vous pouvez également ajouter manuellement les pauses de page à l'aide de CSS.

Comment définir la taille et l'orientation de la page?

Vous pouvez définir la taille et l'orientation de la page à l'aide de la méthode «set_paper». Par exemple, vous pouvez utiliser '$ dombpdf-> set_paper (' a4 ',' paysage ')' pour définir la taille de la page sur A4 et l'orientation vers le paysage.

Puis-je utiliser DOMPDF avec Laravel?

Oui, DOMPDF peut être utilisé avec Laravel. Il existe un package Laravel appelé «Laravel-Dompdf» qui fournit un moyen facile d'utiliser DOMPDF dans une application Laravel.

Comment puis-je enregistrer le PDF généré dans un fichier?

Vous pouvez enregistrer Le PDF généré à un fichier utilisant la méthode 'Output' et la fonction 'File_Put_Contents'. Par exemple, vous pouvez utiliser 'file_put_contents (' mypdf.pdf ', $ dompdf-> output ())' pour enregistrer le pdf dans un fichier nommé 'mypdf.pdf'.

En réponse dans une application Web?

Oui, vous pouvez envoyer le PDF généré en réponse dans une application Web. Vous pouvez utiliser la méthode «Stream» pour envoyer le PDF directement au navigateur.

est DOMPDF sécurisé?

DOMPDF est généralement considéré comme sécurisé, mais comme tout logiciel, il peut avoir des vulnérabilités. Il est important de maintenir à jour votre installation DOMPDF et de revoir les directives de sécurité fournies par l'équipe DOMPDF.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Cours de collecte en phpArticle suivant:Cours de collecte en php