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-Converter 컨테이너가 실행하여 사용하는 포트를 확인할 수 있습니다.
docker ps -a
HTML에서 PDF 변환기를 사용하는 노드 앱도 로컬로 실행해야합니다. 서비스에는 다음과 같은 환경 변수가 필요합니다.
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.
그런 다음 Puppeteer npm i puppeteer
수동으로 설치해야 할 수도 있습니다.