Conversion automatique raisonnable de HTML en PDF (dans un environnement UNIX / Linux) [fermé]

16

Existe-t-il un moyen de générer automatiquement des documents PDF à partir de fichiers HTML sous Linux où le PDF offre une sorte de ressemblance raisonnable avec le fichier d'entrée?

Un outil en ligne de commande - par opposition à une interface graphique interactive quelconque - est la clé.

J'ai essayé htmldocet certains cousins ​​apparentés, bien sûr. Mais ces outils sont désespérément l'âge de pierre; htmldocne supporte pas du tout CSS. Vous ne trouverez pas beaucoup de documents HTML de nos jours qui n'ont pas au moins un style CSS. Je ne me soucie pas vraiment des effets stupides ou des embellissements mineurs, mais le problème est que CSS est au cœur de la plupart des mises en page de nos jours; peu de gens utilisent plus 6 couches de tables imbriquées. Donc, si l'outil de conversion n'a aucune compréhension de CSS, ce n'est pas seulement une question de «le document ne semble pas tout à fait correct»; il est probable qu'il ne respecte pas du tout la norme minimale d'utilisation.

Certaines personnes m'ont suggéré d'essayer d'utiliser le moteur de rendu Gecko pour générer des images qui peuvent être converties en PDF, mais je ne sais pas comment on pourrait s'y prendre, et encore moins facilement.

Je n'ai aucun mal à croire qu'il existe de bons outils commerciaux qui le font, mais je recherche vraiment un package open source si possible, car l'entreprise elle-même est open source et ne paie pas.

Merci d'avance!

Alex Balashov
la source

Réponses:

7

Avez-vous vu wkhtmltopdf ? Je ne peux pas dire à quel point cela fonctionne personnellement, mais cela semble exactement ce dont vous avez besoin. Le seul problème peut être, avec cette solution et toute solution d'automatisation du navigateur, qu'elle récupérera la feuille de style d'impression plutôt que celle affichée à l'écran, de sorte que le PDF peut ne pas être exactement ce que vous voyez à l'écran.

robertc
la source
Qu'est-ce qu'une feuille de style d'impression? Je dois être déconnecté des dernières nouveautés de l'univers CSS.
Alex Balashov
Ce n'est rien de nouveau, cela n'est devenu pratique pour la plupart des sites Web qu'une fois qu'ils sont passés au CSS pour la mise en page au lieu des tableaux. Essayez alistapart.com/articles/goingtoprint ou webcredible.co.uk/user-friendly-resources/css/… pour une introduction.
robertc
2

Essayez chm2pdf avec python-beautifulsoup.

riza
la source
2

XHTML2PDF est un ensemble d'outils Python qui comprend à la fois des scripts de ligne de commande et une bibliothèque Python (si vous souhaitez intégrer cela dans quelque chose de plus grand sans décortiquer le script.) Il prend en charge HTML / XHTML et CSS, avec des styles CSS spécifiques au fournisseur supplémentaires pour modifier la sortie formatée (par exemple, les numéros de page, le flux de paragraphe, etc.)

Je ne l'ai utilisé qu'un tout petit peu pour traiter par lots quelques documents HTML, mais cela a bien fonctionné et son ensemble de fonctionnalités me semble complet. Le manuel est caché sur la page de démonstration, mais est, en soi, un bon exemple de la conversion d'un document HTML en PDF.

J'avais un bel ensemble de liens vers des exemples "avant" et "après", mais je viens de créer mon compte, et, apparemment, seuls les spammeurs ont mis plus d'un lien dans leur premier post :-p

Tripp Lilley
la source
1

Je voulais générer du PNG à partir de pages HTML à partir de la ligne de commande. Quelque part, j'ai trouvé ce script ruby qui utilise mozembed pour générer une capture d'écran. Vous pouvez supprimer la ligne d'échelle si vous ne souhaitez pas la mettre à l'échelle.

Le seul problème que je vois, c'est que la page apparaît effectivement à l'écran pendant un moment ...

chmeee
la source
Hm, ouais. La dernière partie semble être un peu meurtrière. Cela doit être intégré dans un backend purement côté serveur; pas de tête d'affichage ou quoi que ce soit. Une façon d'accomplir cela?
Alex Balashov
0

essayez dompdf cela fonctionne très bien à partir de la ligne de commande et par ses exemples cela fonctionne avec n'importe quel type de html

Daniel Provin
la source
0

PrinceXML. Peut très bien gérer CSS. Versions Linux, Windows, Mac OS X disponibles. AFAICS, c'est aussi la technologie derrière la sortie PDF de Google Docs. Mais notez: c'est de la paye.

Kurt Pfeifle
la source