March 18, 2017

node.js的html轉PDF輸出模組: node-html-pdf

有些時候我們的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

語法

轉換流程: 先將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' }