Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/12/2023, à 12: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, à 11: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, à 14: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, à 14: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, à 11: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