#1 Le 11/12/2023, à 11:09
- hcm
[Résolu] - Conversion d'un fichier HTML intégrant du javacript en PDF
Bonjour,
J'ai développé une application en python, qui s'appuie sur la bibliothèque python bokeh. Elle me génère un fichier HTML (toto.html) pour afficher un graphique dans un navigateur.
Dans ce navigateur je peux tout à fait sauvegarder ce graphique au format PDF (en utilisant l'option d'impression).
J'aimerais pouvoir automatiser cette conversion PDF, par exemple dans un script (langage python ou autre), ou éventuellement par ligne de commande d'un viewer HTML (comme firefox par exemple).
A la limite, peu importe la solution technique. L'important est de pouvoir convertir ce fichier HTML (qui intègre du javascript pour l'afficheur graphique bokeh) en un fichier PDF, de sorte à disposer du graphe généré par le javascript.
L'objectif ultime étant d'intégrer le graphique généré par toto.html dans une page HTML de plus haut niveau qui groupera du texte et plusieurs graphiques générés par de multiples pages (toto1.html, toto2.html, ... totoN.html). Mais ça, ça me semble assez simple à réaliser lorsque j'aurai réussi à convertir le graphique N généré par totoN.html en PDF ou autre format (ce pourrait être du jpeg par exemple).
Tous les convertisseurs que j'ai pu trouver jusqu'à présent échouent car il n'exécutent pas le javascript et me retournent une page blanche au lieu du graphe attendu.
Merci pour votre aide.
Dernière modification par hcm (Le 12/12/2023, à 10:55)
Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33
Hors ligne
#2 Le 11/12/2023, à 13:58
- hcm
Re : [Résolu] - Conversion d'un fichier HTML intégrant du javacript en PDF
Quelques recherches plus tard, je tombe sur cette page ci et aussi celle-là qui m'orientent vers la ligne de commande wkhtmltopdf, utilisée comme ceci:
wkhtmltopdf -n --enable-javascript --debug-javascript --javascript-delay 2000 mon-fichier.html mon-fichier.pdf
La commande m'affiche qq warnings
Loading page (1/2)
Warning: https://cdn.bokeh.org/bokeh/release/bokeh-2.3.2.min.js:163 SyntaxError: Unexpected keyword 'function'
Warning: file:///mon-fichier.html:21 ReferenceError: Can't find variable: Bokeh
Warning: file:///mon-fichier.html:49 ReferenceError: Can't find variable: Bokeh
Printing pages (2/2)
Done
Elle me produit un fichier PDF qui est une page blanche quand je le visualise avec evince.
Je n'y connais rien en javascript mais la ligne 163 du fichier https://cdn.bokeh.org/bokeh/release/bokeh-2.3.2.min.js ne me semble pas plus problématique que les autres ...
Retour à la case départ donc.
Dernière modification par hcm (Le 11/12/2023, à 13:59)
Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33
Hors ligne
#3 Le 12/12/2023, à 10:54
- hcm
Re : [Résolu] - Conversion d'un fichier HTML intégrant du javacript en PDF
Finalement, j'ai abandonné la piste de wkhtmltopdf pour m'orienter vers les fonctionnalités d'export de Bokeh qui peut exporter les graphiques générés selon plusieurs formats (SVG et PNG).
Pour cela, il faut ajouter le module selenium qui peut contrôler les fonctionnalités de différents navigateur dont Firefox, moyennant l'installation du pilote geckodriver.
Ma difficulté principale pour cette solution est que ma version de Bokeh m'est imposée par une librairie de mon application python. Je suis obligé de travailler avec Bokeh v2.3.2
Il m'a fallut trouver une version selenium compatible.
A toutes fins utiles, je vous donne la solution que j'ai trouvée.
Bokeh v2.3.2 est compatible de selenium v3.141.0 qui est compatible de geckodriver 0.29.0 (cf6956a5ec8e 2021-01-14 10:31 +0200) qui est compatible de Firefox 115.5.0esr.
Tout ça fonctionne bien ensemble et me produit un fichier SVG à la demande.
Bien que cette solution ne réponde pas entièrement au problème tel qu'il est posé dans le premier post, je le passe à Résolu car globalement la fonctionnalité recherchée est rendue.
Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33
Hors ligne