Envoyez un modèle HTML ou Mustache et recevez un flux PDF comme réponse.
Accédez à Quay.io/ukhomeOfficediGital/html-pdf-Converter pour trouver la dernière version taguée. Docker tirera la version que vous spécifiez.
Par exemple, si la dernière version taguée v2.4.3, alors cette commande devra être exécutée:
docker pull quay.io/ukhomeofficedigital/html-pdf-converter:v2.4.3
Une fois terminé, vous pouvez vérifier que l'image est disponible localement en fonctionnant:
docker image list
Tous les formulaires HOF s'exécutent localement sur le port 8080 et, dans certains cas, le port 8081 peut également être utilisé; Le convertisseur HTML-PDF doit donc être exécuté sur un autre port. Actuellement, le port 8082 est recommandé.
docker run -t -i -p 8082:8080 quay.io/ukhomeofficedigital/html-pdf-converter: ** < tag > **
Observez le suivi dans le terminal:
2023-09-13T11:18:07.061Z - info: Listening on localhost:8080
Remarque: Le terminal dira que l'application écoute sur le port 8080, mais vous pouvez vérifier quel port le conteneur HTML-PDF-convertisseur utilise en exécutant:
docker ps -a
L'application Node qui utilise le convertisseur HTML vers PDF devra également être exécuté localement. Le service aura besoin de la variable Env suivante:
PDF_CONVERTER_URL
: Si vous exécutez un convertisseur PDF local, c'est l'URL et le port sur lesquels il fonctionne. Cette URL doit être dans le format PDF_CONVERTER_URL=http://localhost:<PORT>/convert
.
Dans cet exemple, le pdf_converter_url serait PDF_CONVERTER_URL=http://localhost:8082/convert
Sur une conversion HTML à PDF réussie, la réponse devrait ressembler à ceci:
2023-09-12T15:31:30.249Z - info: status=201, method=POST, url=/convert, response_time=392, content_length=39644
git clone [email protected]:UKHomeOffice/html-pdf-converter.git
cd html-pdf-converter
npm install
npm start
Moustache et données
curl -H " Content-Type:application/json "
-d ' {
"template": " ' "
<html>
<head>
<title>{{title}}</title>
</head>
<body>
<h1>{{header}}</h1>
<p>{{para}}</p>
</body>
</html>
" ' ",
"data": {
"title": "My title",
"header": "My header",
"para": "My content"
}
} '
-i localhost:8080/convert
Html
curl -H " Content-Type:application/json "
-d ' {
"template": " ' "
<html>
<head>
<title>My title</title>
</head>
<body>
<p>Hello world</p>
</body>
</html>
" ' "
} '
-i localhost:8080/convert
Réponse (exemple)
%PDF-1.4 n 1 0 obj n << n/Title ...
Chrome peut accepter un certain nombre d'options à sa fonction de rendu PDF. Ceux-ci sont documentés ici: https://github.com/googlechrome/puppeteer/blob/master/docs/api.md#pagepdfoptions
Ceux-ci peuvent être définis sur une base par demande en passant un objet pdfOptions
dans le cadre de votre corps de demande.
{
"template" : " <h1>Hello World!</h1> " ,
"pdfOptions" : {
"printBackground" : true
}
}
Ce service ne peut pas résoudre des ressources externes telles que CSS, JavaScript ou images liées. Si votre modèle comprend des liens vers l'une de ces ressources, nous vous suggérons d'utiliser https://github.com/remy/inliner. La source d'Inliner peut être une URL, un emplacement de fichier ou une chaîne HTML.
APP_PORT: Defaults to 8080
APP_HOST: Defaults to ' localhost '
Si vous obtenez l'erreur suivante localement, html-pdf-converter: Handling error message=Could not find browser revision 756035. Run "npm install" or "yarn install" to download a browser binary.
Ensuite, vous devrez peut-être installer manuellement le marionnettiste npm i puppeteer