Maison >développement back-end >tutoriel php >PHP Master | Convertir HTML en PDF avec DOMPDF
git clone https://github.com/dompdf/dompdf.git git submodule init git submodule updateAvec 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:
git clone https://github.com/dompdf/dompdf.git git submodule init git submodule updateAu 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:
git clone https://github.com/dompdf/dompdf.git git submodule init git submodule updateNotez que nous plaçons le code après avoir appelé $ dOMPDF-> render () car nous modifions essentiellement le PDF rendu.
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.
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.
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.
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é.
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.
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.
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.
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'.
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.
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!