今日目標
了解為何選擇 Gotenberg 作為 PDF 轉檔引擎,並在專案中撰寫 docker-compose.yml,透過 Docker 啟動無頭瀏覽器(Headless Browser)微服務。
核心概念:為什麼不用 Java 原生套件畫 PDF?
過去在開發醫療資訊系統(HIS)時,工程師常使用 JasperReports 或 iText 等 Java 原生套件來「畫」PDF。這會遇到幾個問題:
解法:Gotenberg + Docker
Gotenberg 是一個開源的 PDF 引擎,它內部封裝了 Google Chromium 瀏覽器。
透過微服務架構,Spring Boot 只需要專心做一件事:「把資料塞進 HTML 裡」。然後透過 HTTP API 把 HTML 丟給 Gotenberg,它就會像我們在瀏覽器按下「列印成 PDF」一樣,完美、精準地把網頁轉成實體文件。這種「解耦(Decoupling)」的設計,是現代企業級應用的最佳實踐。
實作重點:建置 docker-compose.yml
在 VS Code 的專案根目錄(與 pom.xml 同層)新增 docker-compose.yml 檔案。
services:
gotenberg:
image: gotenberg/gotenberg:8
container_name: medical-gotenberg
ports:
- "3000:3000"
測試指令:
docker-compose up -d
心得
雖然今天因為版本參數遇到了一些問題,但後來一步步抓出錯誤的地方,最後成功啟動 Gotenberg 轉檔微服務,而明天,準備實作前台登記 API!