最近在node.js項目開發中,遇見生成pdf的需求,當然生成pdf不是一個新意的需求;我可以選擇利用開源的pdfkit或者其他node pdf子產品,或者通過edge.js調用.net/python下的pdf庫去做生成pdf。但是在我看來對于這些東西不管如何也需要花費我們太多的時間(pdf報表的内容報表很複雜),不如把所有的畫圖實作邏輯推向大家所熟悉的html+css來的簡潔,快速,這樣對于pdf格式變化和圖形計算邏輯的變化推到ejs、jade之類的模闆引擎,對于以後的修改維護擴充是個很不錯的選擇。是以選擇phantomjs加載頁面生成pdf對于我來說不是個不錯的選擇,同時對于html+css我所需要相容的僅有webkit一種浏覽器,沒有厭惡的浏覽器相容性顧慮。是以說做就做,我在項目上花了半個小時配置phantomjs的自動化腳本(在各環境能夠自動勾踐),以及實作了一個簡單頁面的pdf轉化。
rasterize.js(來自官方pdf demo):
在node調用端,使用exec調用指令行輸入得到檔案并傳回到node response流:
guid utils:
響應的代碼也可以很好的轉換為java/c#...的指令行調用來得到pdf并推送到response流中。一切都這麼簡單搞定。
node也有node-phantom子產品,但是用它生成的pdf樣式有點怪,是以最後還是堅持采用了exec方式去做。
還有就是phantomjs生成pdf不會把css的背景色和背景圖檔帶進去,是以對于這塊專門利用了純色圖檔img标簽,并position:relative或者absolute去定位文字.這點還好因為這個頁面上使用者不會看的,
文章也到此結尾,希望多多交流,繼續關注,謝謝大家。