Отправьте шаблон HTML или усов и получите PDF -поток в качестве ответа.
Перейдите к Quay.io/ukhomeofficeedigital/html-pdf-converter, чтобы найти последнюю версию с меткой. Docker вытянет любую версию, которую вы указали.
Например, если последняя версия с меткой v2.4.3, то эту команду нужно будет запустить:
docker pull quay.io/ukhomeofficedigital/html-pdf-converter:v2.4.3
После завершения вы можете проверить, что изображение доступно локально, работая:
docker image list
Все формы HOF работают локально на порту 8080, а в некоторых случаях также может использоваться порт 8081; Таким образом, HTML-PDF-конвертер следует запускать на другом порту. В настоящее время рекомендуется порт 8082.
docker run -t -i -p 8082:8080 quay.io/ukhomeofficedigital/html-pdf-converter: ** < tag > **
Наблюдайте за следующим в терминале:
2023-09-13T11:18:07.061Z - info: Listening on localhost:8080
ПРИМЕЧАНИЕ. Терминал скажет, что приложение прослушивается на порту 8080, однако вы можете проверить, какой порт контейнер HTML-PDF-конвертер использует при запуске:
docker ps -a
Приложение Node, которое использует HTML в PDF -преобразователь, должно также работать локально. Службу потребуется следующая переменная ENV:
PDF_CONVERTER_URL
: Если вы используете локальный PDF -преобразователь, это URL и порт, на котором он работает. Этот URL должен быть в формате PDF_CONVERTER_URL=http://localhost:<PORT>/convert
.
В этом примере PDF_CONVERTER_URL будет PDF_CONVERTER_URL=http://localhost:8082/convert
При успешном конверсии HTML в PDF ответ должен выглядеть примерно так:
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
Усы и данные
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
Ответ (пример)
%PDF-1.4 n 1 0 obj n << n/Title ...
Chrome может принять ряд вариантов функции рендеринга PDF. Они задокументированы здесь: https://github.com/googlechrome/puppeteer/blob/master/docs/api.md#pagepdfoptions
Они могут быть установлены на основе первого запроса, передавая объект pdfOptions
в рамках вашего запроса.
{
"template" : " <h1>Hello World!</h1> " ,
"pdfOptions" : {
"printBackground" : true
}
}
Эта служба не может разрешить внешние ресурсы, такие как связанные CSS, JavaScript или изображения. Если ваш шаблон включает в себя ссылки на любой из этих ресурсов, мы предлагаем вам использовать https://github.com/remy/inliner. Источником для INLINER может быть URL, местоположение файла или строка HTML.
APP_PORT: Defaults to 8080
APP_HOST: Defaults to ' localhost '
Если вы получите следующую ошибку локально, html-pdf-converter: Handling error message=Could not find browser revision 756035. Run "npm install" or "yarn install" to download a browser binary.
Тогда вам может потребоваться вручную установить кукольник npm i puppeteer