有些時候我們的node.js服務需要將某個HTML頁面或是計算結果輸出成pdf檔案時, 可以使用node-html-pdf這個模組。這篇文章中我們會建立一個demo程式示範如何將 JSON 檔案輸出成PDF檔案。
情境
某服務程式將天氣資料統計輸出為JSON格式檔案,現在該服務希望提供PDF檔案以供書面使用。
構想
JSON本身並沒有任何排版資訊,他只是原始的資料。所以如果想要轉檔成pdf, 那可能必須先使用html tags將JSON原始資料做排版,排版完的html資料先存在變數中再由html-pdf模組PDF輸出。
有了構想之後,就可以開始動手做囉。本範例的程式碼可於github上找到。
github repo:
https://github.com/royvbtw/pdf-converter-demo
使用node-html-pdf模組
使用npm安裝: npm install --save html-pdf
本模組依賴關係: 必須先安裝phantomjs-prebuilt
github project: https://github.com/marcbachmann/node-html-pdf
使用npm安裝: npm install --save html-pdf
本模組依賴關係: 必須先安裝phantomjs-prebuilt
github project: https://github.com/marcbachmann/node-html-pdf
語法
轉換流程: 先將JSON排版成HTML格式,再使用本篇主角node-html-pdf模組進行輸出。
天氣資料-JSON格式檔案: data.json
接下來,我們需要將這個JSON檔案排版成HTML版面。這裡為了示範只做了簡單的排版,實際的HTML版面可能會因為各需求不同而變化。
簡易轉換程式: 將JSON原始資料排版成HTML版面配置
最後,我們就可以用html-pdf module將html變數裡的資料輸出成pdf檔案。
最後執行node index.js。如果沒意外的話,應該就能在專案跟目錄裡面看到weather.pdf的pdf輸出結果。Cool!
$ node index.js
result= { filename: 'C:\\workspace\\node\\pdf-converter\\weather.pdf' }