Générer des PDF avec Gotenberg

Voir la vidéo

Dans cette vidéo je vous propose de découvrir Gotenberg, un outil basé sur docker qui va vous permettre de mettre en place rapidement une API pour convertir différents types de documents au format PDF.

L'utilisation est simplifiée grâce à l'utilisation d'un container docker.

docker run --rm -p 3000:3000 thecodingmachine/gotenberg:5

Il suffit ensuite d'appeler les différents endpoints de l'API en fonction de ce que vous souhaitez faire. Par exemple pour convertir un document HTML en PDF :

curl --request POST \
    --url http://localhost:3000/convert/html \
    --header 'Content-Type: multipart/form-data' \
    --form files=@index.html \
    -o result.pdf

En plus de l'image docker, gotenberg propose un client pour les langages go et PHP, ce qui simplifie les interactions avec l'API :

use TheCodingMachine\Gotenberg\Client;
use TheCodingMachine\Gotenberg\HTMLRequest;

// On génère le code du PDF
$faker = \Faker\Factory::create('fr_FR');
ob_start();
require('pdf.php');
$content = ob_get_clean();

// On crée la requête à faire à l'API
$index = DocumentFactory::makeFromString('index.html', $content);
$assets = [
    DocumentFactory::makeFromPath('pdf.css', 'pdf.css')
];
$request = new HTMLRequest($index);
$request->setAssets($assets);
$request->setFooter(DocumentFactory::makeFromPath('footer.html', 'footer.html'));

// On génère la réponse
$client = new Client('http://localhost:3000', new \Http\Adapter\Guzzle6\Client());
$response = $client->post($request);
$response = $response->withHeader('Content-Disposition', 'inline; filename="facture.pdf"');

// Et on la renvoie à l'utilisateur
\Http\Response\send($response);
Publié
Technologies utilisées
Auteur :
Grafikart
Partager