support puppeteer's PDFOptions, add param for preload

This commit is contained in:
oom 2025-02-28 10:31:11 +07:00
parent f6b68e4379
commit c33e0653af
4 changed files with 117 additions and 71 deletions

View file

@ -64,9 +64,13 @@ $ npx ts-node html-template.ts
หรือใช้ Rest Client ดูไฟล์ [api.http](./api.http)
ตรง http header จะใช้ accept เป็นตัวบอกว่าต้องการผลเป็นไฟล์แบบไหนโดยใช้ [Mime type](https://developer.mozilla.org/en-US/docs/Web/HTTP/MIME_types/Common_types) เพื่อเป็นมาตรฐาน ให้ดูที่รองรับในฟังก์ชั่น [mimeToExtension](./libs/report-template.ts)
การตั้งค่าของ template อยู่ที่ [templateOption](./libs/report-template.ts)
### HTML
แปลงจาก URL เป็น pdf,png,jpg รองรับการตัดคำไทย ฟีเจอร์ template ยังไม่เสร็จ
แปลงจาก URL เป็น pdf,png,jpg รองรับการตัดคำไทย การแปลงเป็น
- [templateOption.htmlTemplateOption](./libs/report-template.ts) เป็นการตั้งค่าเฉพาะของโมดุลนี้
- templateOption.htmlTemplateOption.PDFOptions ซึ่งเป็น [PDFOptions](https://pptr.dev/api/puppeteer.pdfoptions) ของ puppeteer
ฟีเจอร์ template ยังไม่เสร็จ
``` sh
# Grafana dashboard to pdf
curl -X 'POST' \
@ -80,6 +84,7 @@ curl -X 'POST' \
}
}' -o html-grafana.pdf
# url to png
curl -X 'POST' 'http://localhost:3001/api/v1/report-template/html' \
-H 'accept: image/png' -H 'Content-Type: application/json' \
@ -88,8 +93,31 @@ curl -X 'POST' 'http://localhost:3001/api/v1/report-template/html' \
curl -X 'POST' 'http://localhost:3001/api/v1/report-template/html' \
-H 'accept: image/jpeg' -H 'Content-Type: application/json' \
-d '{"template": "https://pantip.com/","reportName": "html-blognone"}' -o html-pantip.jpeg
# url to pdf pantip.com very long lazyload you
curl -X 'POST' 'http://localhost:3001/api/v1/report-template/html' \
-H 'accept: application/pdf' -H 'Content-Type: application/json' \
-d '{"template": "https://pantip.com/","reportName": "html-blognone",
"htmlOption": {
"preloadWait":500,
"preloadScroll":1000,
"preloadLoop":25,
"pdfOption":{"format":"A4"}
}
}' -o html-pantip.pdf
```
# pantip.com to pdf
curl -X 'POST' \
'http://localhost:3001/api/v1/report-template/html' \
-H 'accept: application/pdf' -H 'Content-Type: application/json' \
-d '{
"template": "https://pantip.com",
"reportName": "html-pantip.com"
}' -o html-pantip.com.pdf
### docx
แปลงจากเทมเพลทไฟล์ .docx เป็น docx,pdf,png
```sh