Envíe una plantilla HTML o bigote y reciba una secuencia PDF como respuesta.
Navegue a quay.io/ukhomeofficedigital/html-pdf-converter para encontrar la última versión etiquetada. Docker tirará de la versión que especifique.
Por ejemplo, si la última versión etiquetada v2.4.3, entonces este comando deberá ejecutarse:
docker pull quay.io/ukhomeofficedigital/html-pdf-converter:v2.4.3
Una vez completado, puede verificar que la imagen esté disponible localmente ejecutando:
docker image list
Todos los formularios HOF se ejecutan localmente en el puerto 8080 y en algunos casos el puerto 8081 también puede estar en uso; Entonces, el html-pdf-converter debe ejecutarse en otro puerto. Actualmente se recomienda el puerto 8082.
docker run -t -i -p 8082:8080 quay.io/ukhomeofficedigital/html-pdf-converter: ** < tag > **
Observe el seguimiento en la terminal:
2023-09-13T11:18:07.061Z - info: Listening on localhost:8080
Nota: El terminal dirá que la aplicación está escuchando en el puerto 8080, sin embargo, puede verificar qué puerto se está utilizando el contenedor HTML-PDF-Converter ejecutando:
docker ps -a
La aplicación de nodo que está utilizando el convertidor HTML a PDF también deberá ejecutarse localmente. El servicio necesitará la siguiente variable env:
PDF_CONVERTER_URL
: si está ejecutando un convertidor PDF local, esta es la URL y el puerto en el que se ejecuta. Esta URL debe estar en el formato PDF_CONVERTER_URL=http://localhost:<PORT>/convert
.
En este ejemplo, el pdf_converter_url sería PDF_CONVERTER_URL=http://localhost:8082/convert
Tras una conversión exitosa de HTML a PDF, la respuesta debería verse algo así:
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
Bigote y datos
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
Respuesta (ejemplo)
%PDF-1.4 n 1 0 obj n << n/Title ...
Chrome puede aceptar una serie de opciones para su función de renderizado PDF. Estos están documentados aquí: https://github.com/googlechrome/puppeteer/blob/master/docs/api.md#pagepdfoptions
Estos se pueden establecer por solicitud pasando un objeto pdfOptions
como parte de su cuerpo de solicitud.
{
"template" : " <h1>Hello World!</h1> " ,
"pdfOptions" : {
"printBackground" : true
}
}
Este servicio no puede resolver recursos externos, como CSS, JavaScript o imágenes vinculados. Si su plantilla incluye enlaces a cualquiera de estos recursos, le sugerimos que use https://github.com/remy/inliner. La fuente de Inliner puede ser una URL, una ubicación de archivo o una cadena HTML.
APP_PORT: Defaults to 8080
APP_HOST: Defaults to ' localhost '
Si recibe el siguiente error localmente, html-pdf-converter: Handling error message=Could not find browser revision 756035. Run "npm install" or "yarn install" to download a browser binary.
Entonces es posible que necesite instalar manualmente Puppeteer npm i puppeteer