Envie um modelo HTML ou Bigode e receba um fluxo PDF como resposta.
Navegue até quay.io/ukhomeofficedigital/html-pdf-converter para encontrar a versão mais recente da tag. Docker puxará a versão que você especificar.
Por exemplo, se a versão mais recente marcada v2.4.3, este comando precisará ser executado:
docker pull quay.io/ukhomeofficedigital/html-pdf-converter:v2.4.3
Depois de concluído, você pode verificar se a imagem está disponível localmente em execução:
docker image list
Todos os formulários HOF são executados localmente na porta 8080 e, em alguns casos, a porta 8081 também pode estar em uso; Portanto, o conversor HTML-PDF deve ser executado em outra porta. Atualmente, a porta 8082 é recomendada.
docker run -t -i -p 8082:8080 quay.io/ukhomeofficedigital/html-pdf-converter: ** < tag > **
Observe o seguinte no terminal:
2023-09-13T11:18:07.061Z - info: Listening on localhost:8080
NOTA: O terminal dirá que o aplicativo está ouvindo na porta 8080, no entanto, você pode verificar qual porta o contêiner HTML-PDF-CONVERTER está usando executando:
docker ps -a
O aplicativo Node que está usando o conversor HTML para PDF também precisará ser executado localmente. O serviço precisará da seguinte variável Env:
PDF_CONVERTER_URL
: Se você estiver executando um conversor PDF local, este é o URL e a porta, ele está sendo executado. Este URL deve estar no formato PDF_CONVERTER_URL=http://localhost:<PORT>/convert
.
Neste exemplo, o pdf_converter_url seria PDF_CONVERTER_URL=http://localhost:8082/convert
Após uma conversão de HTML para PDF bem -sucedida, a resposta deve parecer algo assim:
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
Bigode e dados
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
Resposta (exemplo)
%PDF-1.4 n 1 0 obj n << n/Title ...
O Chrome pode aceitar várias opções para sua função de renderização em PDF. Estes estão documentados aqui: https://github.com/googlechrome/puppeteer/blob/master/docs/api.md#pagepdfoptions
Eles podem ser definidos por solicitação, aprovando um objeto pdfOptions
como parte do seu corpo de solicitação.
{
"template" : " <h1>Hello World!</h1> " ,
"pdfOptions" : {
"printBackground" : true
}
}
Este serviço não pode resolver recursos externos, como CSS vinculados, JavaScript ou imagens. Se o seu modelo incluir links para qualquer um desses recursos, sugerimos que você use https://github.com/remy/inliner. A fonte do Inliner pode ser um URL, um local de arquivo ou uma string html.
APP_PORT: Defaults to 8080
APP_HOST: Defaults to ' localhost '
Se você receber o seguinte erro localmente, html-pdf-converter: Handling error message=Could not find browser revision 756035. Run "npm install" or "yarn install" to download a browser binary.
Então você pode precisar instalar manualmente o marionete npm i puppeteer