samedi, 12 octobre 2019 09:12

Et si nous générions des PDF de document en ligne ?

Écrit par

La problématique

Aujourd'hui nous allons transformer une page web ou un (long) texte... en PDF. Qui n'a jamais révé (hormis moi) de trouver une solution simple pour transformer une page web en PDF ? Et l'intégré à une application Web ? Bon oui moi j'en ai révé, peut etre pas vous...

Le service interrogé : html2pdf.app

J'ai décoouvert ce service tardivement, car j'en aurais eu besoin. En effet, sur un projet PHP, j'ai du tout recoder avec FPDF, tache fastidieuse à mon gout. Fini désormais avec cet outil : vous générez votre HTML et vous l'envoyer à ce service. En retour, vous telechargez votre fichier PDF généré. Elle est pas belle la vie ?

Comment l'utiliser ?

Alors là, c'est d'une complexité extreme :) Nonn je déconne bien entendu. L'utilisation de cette API réside en UNE SEULE URL, celle ci comportant 3 éléments obligatoire et deux facultatifs :

  • url : l'URL de la page web à convertir en PDF
  • html : le code HTML, envoyé en post, à convertir en PDF
  • apikey : la clef API bien entendu
  • callBackUrl : Paramètre facultatif, à fournir si vous souhaitez générer un document en arrière-plan et obtenir le résultat dans votre URL de rappel (utile pour les documents de grande taille)
  • email : Paramètre optionnel, le document généré sera directement envoyé dans votre email fourni


Nous pouvons voir jusque là que rien n'est bien complexe.... Alors essayons.

NB : a des fins de tests, j'ai remarqué que la clef API affichée en clair dans leurs codes est fonctionnelle. N'abusez pas, mais pour vos tests, cela peut etre utile...

 

Exemples expliqués et résultats :

Commençons simplement : Convertissons une URL en fichier PDF. Nous allons convertir la page d'accueil de google en PDF. On est bien d'accord que ca sert à rien mais c'est pour l'exemple :
https://api.html2pdf.app/v1/generate?url=http://www.google.com&apiKey=dd6b0b4b00942789978afac2f53f324c48e6dffab5fa9563d541f07407c57623

En cliquant sur ce lien, votre PDF sera généré, télélchargé et si votre navigateur vous le permet, affiché dans ce dernier (du coup, fait gaffe que c'est un PDF d'affiché et pas une page web)


Il est aussi possible de générer une page html en ligne en ligne. Nous remarquons d'ailleurs que le serveur à l'air d'etre hébergé dans un pays hispanique, au vu de la langue affichée) : https://api.html2pdf.app/v1/generate -H 'Content-Type: application/json' -d '{"url": "http://www.example.com","apiKey": "8fc8992e7ab59463faeffa82343b41a21bb05a1fe5bc2102c52a02e0a171b864"}'
Il faut donc le rediriger dans un fichier PDF afin de l'enregistrer sur la machine bien entendu.
curl -X POST https://api.html2pdf.app/v1/generate -H 'Content-Type: application/json' -d '{"url": "http://www.example.com","apiKey": "8fc8992e7ab59463faeffa82343b41a21bb05a1fe5bc2102c52a02e0a171b864"}>MonFichier.pdf'

 

Cerise sur le gâteau : le callback et le travail en tâche de fond


Enfin, pour clore le sujet de la génération de fichier PDF avec cette API, il est possible d'utiliser la notion de "callback", qui permet à l'utilisateur d'envoyer une génération d'un ficher PDF en tâche de fond. Lorsque le traitement est exécuté, l'API renvoie un document encodé en base64, à l'adresse de callback mentionnée dans l'url par le paramètre callbackurl.
Je tenais à vous informer de cette possibilité mais gardons à l'esprit que ce blog reste un blog de découverte et que la notion de callback n'est pas forcément bien intégré par tout le monde

 

Lu 865 fois