À propos de ce tutoriel
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);