HTMLまたは口ひげテンプレートを送信し、応答としてPDFストリームを受け取ります。
quay.io/ukhomeofficedigital/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-Converterコンテナが実行しているポートを実行していることを確認できます。
docker ps -a
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
をインストールする必要があるかもしれません