Comment puis-je convertir du HTML avec CSS en PDF?
Comment puis-je convertir du HTML avec CSS en PDF?
Quelques questions vont dans ce sens sur StackOverflow, mais sont hors sujet là-bas, alors posons une question sur le sujet ici.
Ce serait bien si vous mettiez un exemple de capture d’écran dans vos réponses pour chaque outil / bibliothèque que vous proposez.
Veuillez également noter:
- CSS: l’outil / bibliothèque applique-t-il le CSS?
- @page: applique-t-il le mode paysage / portrait?
- Des polices? ( Cette question ne concerne que les outils / bibliothèques qui respectent
@font-face
) - Couleurs?
- JavaScript: applique-t-il JavaScript avant la génération du PDF?
- à titre gracieux ou non
- open-source ou non
- Quelles sont les exigences?
Exemple 1
Vous pouvez utiliser ce qui suit comme exemple pour les tests:
<!DOCTYPE html> <html> <head> <title>HTML 2 PDF print test</title> <style type="text/css"> body { font-size: 14px; color: #333; } table { width: 100%; max-width: 100%; border-spacing: 0; border-collapse: collapse; font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; } th { text-align: left; } td, th { vertical-align: top; border-top: 1px solid #ddd; line-height: 1.42857143; padding: 8px; } tbody tr:nth-child(odd) { background-color: #f9f9f9 !important; } @media print{ @page {size: landscape} } </style> </head> <body> <table class="table table-striped"> <tr> <th style="font-family:Courier New;">Country</th> <th style="color: red;">Code</th> <th style="color: red !important;">Phone</th> <th>Language</th> <th>Population</th> <th>Banana Rama</th> <th>Foo bar</th> <th>Constants</th> <th>Empty Cells</th> <th>More</th> <th>End</th> </tr> <tr> <td>Germany</td> <td>de</td> <td>+49</td> <td>German</td> <td>82 Million</td> <td id="cell">JavaScript does <span style="color: red">not</span> work.</td> <td>dasfd asfawerf asdfvas fwer </td> <td>asd fasdf asdfa sdfa sdf asdf asdf asdfa sdf asd</td> <td>-</td> <td>asdf asdfasd fasdf asdfa sdfasdf</td> <td>ad fasd fasd fasd fasdf asd fasdf as</td> </tr> <tr> <td>France</td> <td>fr</td> <td>+01</td> <td>French</td> <td>70 Million</td> <td>a asdfa sdf asdf asdf asdfasd asdf asdf asd fasd fasdfa sdf</td> <td>aerte fasf werwasdfa sd3e asdf adfasdfe werfa sdfas</td> <td>as dfasd fasd fasd fasd fasd </td> <td></td> <td>asd fasd fasdf asdf asd fasdf asdf asd fasdf asdf </td> <td>as dfa sd asfdas asfd </td> </tr> <tr> <td>Great Britain</td> <td>uk</td> <td>+02</td> <td>English</td> <td>60 Million</td> <td>asdfasdf asdf asdfa sdf asdfasdf </td> <td>asd fasdf asdf asdfwr wadfa sd f</td> <td>ada asdf asd</td> <td></td> <td>a sd fasd fasdf asdf asdfa sdf a</td> <td>asasd asdf asd fasd fas asd fasdf </td> </tr> <tr> <td>United States of America</td> <td>us</td> <td>+03</td> <td>English</td> <td>300 Million</td> <td>asdf asdfasd fasdfwerwfasdfasdf asdfasdfasd </td> <td>a dfasdf asdf asdf rt asdf asdfasd asdf asd fasd fas</td> <td>a dsfas fasd f</td> <td></td> <td>a dsfa sdfasd fasd f</td> <td>a dsfasd asdf asdf asd fafasd fas fas </td> </tr> </table> <script type="text/javascript"> var cell = document.getElementById("cell"); cell.innerHTML = "JavaScript <span style='color: green; font-weight:bold'>works</span>"; </script> </body> </html>
Chrome en fait ce qui suit avec sa fonction d’impression:
A noter:
- La page est en mode paysage ✓
- La police est modifiée pour le pays ✓
- Le code est rouge ✓
- Le téléphone est rouge ✓
- La table est rayée ✓
- JavaScript est appliqué ✓
pdfkit
, pandoc
, PrinceXML, weasyprint
, wkhtmltopdf
. Réponses
Edi
Sejda PDF
Sejda PDF est un progiciel commercial pour traiter les fichiers PDF, y compris la conversion de HTML en PDF .
Javascript, CSS3, les polices personnalisées sont toutes prises en charge.
La fonctionnalité HTML vers PDF est actuellement en version bêta (commentaires bienvenus!)
Installation
Aucune installation n’est requise.
La fonction HTML vers PDF de Sejda est fournie en tant que service en ligne qui fonctionne dans le navigateur. https://www.sejda.com/html-to-pdf
Le service en ligne peut être utilisé gratuitement jusqu’à 3 conversions par heure.
Une API REST pour la conversion HTML en PDF est également disponible.
Usage
- Ouvrez https://www.sejda.com/html-to-pdf
- Sélectionnez un fichier HTML local ou collez votre code HTML
- Cliquez sur Convertir HTML en PDF
Exemple 1
- La page est en mode paysage ✓
- La police est modifiée pour le pays ✓
- Le code est rouge ✓
- Le téléphone est rouge ✓
- La table est rayée ✓
- JavaScript fonctionne ✓
y
. S’il était modifié, le y
aurait une barre inférieure. Dans votre cas, ce n’est pas le cas. Martin Thoma
weasyprint
weasyprint est un package Python gratuit et open source qui est livré avec un exécutable. La documentation est en ligne, le code est sur Github . Le dernier commit a eu lieu le 19.09.2017. Il a 1484 étoiles, 155 fourchettes et 41 contributeurs.
Installation
$ pip install weasyprint
Usage
$ weasyprint input.html output.pdf
Exemple 1
Notez s’il vous plaît:
- La page est en mode paysage ✓
- La police est modifiée pour le pays ✓
- Le code est rouge ✓
- Le téléphone est rouge ✓
- La table est rayée ✓
- JavaScript ne fonctionne pas ✘
Martin Thoma
PrinceXML
PrinceXML est un progiciel commercial. Il peut être installé de différentes manières, y compris un paquet Debian. Une documentation utilisateur est disponible.
Il a une version gratuite qui ajoute une icône au PDF généré. La licence serveur coûte 3800 $ US.
Installation
Voir le guide d’installation
Après avoir installé PrinceXML, vous devriez avoir prince
dans votre CHEMIN:
$ prince --version Prince 11.3 Copyright 2002-2017 YesLogic Pty. Ltd. Non-commercial License
Usage
$ prince input.html -o output.pdf
Exemple 1
Cela ressemble beaucoup à Weasyprint. En fait, je ne vois aucune différence
- La page est en mode paysage ✓
- La police est modifiée pour le pays ✓
- Le code est rouge ✓
- Le téléphone est rouge ✓
- La table n’est pas rayée ✓
- JavaScript n’est pas appliqué ✘
Martin Thoma
wkhtmltopdf
wkhtmltopdf est une ligne de commande gratuite et open source (LGPLv3, source ) pour convertir des fichiers HTML en PDF. Il a 5794 étoiles, 860 fourchettes et 53 contributeurs sur GitHub. Il est écrit en C ++. Le premier commit sur GitHub a eu lieu le 7 mai 2008.
Installation
$ sudo apt-get install wkhtmltopdf
Usage
$ wkhtmltopdf input.html output.pdf
Exemple 1
- La page n’est pas en mode paysage ✘ (voir la demande de fonctionnalité ), mais elle peut être définie avec
-O landscape
- La police est modifiée pour le pays ✓
- Le code est rouge ✓
- Le téléphone est rouge ✓
- La table est rayée ✓
- JavaScript fonctionne ✓
#en, avec, comment, convertir, CSS, du, HTML, PDF, Puis-je