亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

html轉換為pdf案例的一些總結(多圖推薦)

2024-08-26 00:19:53
字體:
來源:轉載
供稿:網友

由于工作所需,最近花時間研究了html轉換為pdf的功能。html轉換為pdf的關鍵技術是如何處理網頁中復雜的css樣式,通過在網上收集資料,發現目前html 轉換為pdf的解決方案主要分為三類:

客戶端模式:前后臺調用客戶端程序,利用客戶端程序的功能完成pdf文件轉換。本次測試工具有:wkhtmltopdf和PhantomJS。java jar包解析類模式:java代碼解析css樣式,翻譯html文件為pdf文件。本次測試類有:IText,Flying Sauser,PD4ML。js 前端解析模式:js前端解析html文件為pdf文件,本次測試案例有:html2canvas。

本次針對網上介紹的方案,結合實際項目的需求,做一一測試,在性能和功能方面做如下分析。

1.測試頁面介紹

通過查看各個轉換案例在網上的介紹,簡單的html樣式,一般的表格樣式在做pdf文件轉換時,以上的方案均支持。但考慮到實際業務的需要,本次測試特意用到了bootstrap (v 3.3.6)的css樣式,同時頁面也應用了css3的新特性?;谶@樣的新特性編寫一個靜態的html頁面,html頁面在瀏覽器中的展示效果如下:

html,pdf

2.wkhtmltopdf測試

wkhtmltopdf是一個使用webkit網頁渲染引擎開發的用來將html轉成 pdf的工具,可以跟多種腳本語言進行集成來轉換文檔。官網地址http://wkhtmltopdf.org/

技術特點:Wkhtmltopdf可以直接把瀏覽器中瀏覽的網頁轉換成一個pdf,他是一個把html頁面轉換成pdf的軟件(需要安裝在服務器上)。使用時可通過java代碼調用cmd指令完成網頁轉換為pdf的功能。

功能測試:直接在cmd里輸入測試指令,可查看處理進度。

html,pdf

第一個參數:wkhtmltopdf.exe所在的路徑

第二個參數:需要轉換為pdf的html頁面

第三個參數:pdf文件路徑及文件名

頁面導出效果如下:

html,pdf

測試說明:

通過測試發現,wkhtmltopdf對bootstap的CSS樣式整體支持較好。對css3的新特性如圓形圖片樣式支持行不好。部分頁面樣式會失效。對于圖表展示,eachart圖表導出程序會報錯,不支持。不過echart有圖表轉換為圖片的接口,可通過獲取圖片地址的方式導出到pdf中。

3.PhantomJS測試

PhantomJS是一個基于webkit內核的無頭瀏覽器,即沒有UI界面,即它是一個瀏覽器,只是其內的點擊、翻頁等人為相關操作需要程序設計實現。它提供javaScript API接口,即通過編寫JS程序可以直接與webkit內核交互,在此之上可以結合java語言等,通過java調用js等相關操作,從而解決了以前c/c++才能比較好的基于webkit開發優質采集器的限制。它同時提供windows、linux、mac等不同os的安裝使用包,也就是說可以在不同平臺上二次開發采集項目或是自動項目測試等工作。官網地址http://phantomjs.org/

PhantomJS可做網頁分析,功能很多,本次僅調用網頁的截圖功能。在cmd中的測試如下:

html,pdf

測試頁面導出效果如下:

html,pdf

測試說明:

通過測試發現,PhantomJS對bootstap的樣式支持較好。對css3的新特性如圓形圖片樣式支持行不好。部分頁面樣式會失效。對于echart圖表展示,也可直接導出。效果如下:

html,pdf

3.IText和Flying Sauser

IText實現html2pdf,速度快,糾錯能力差,支持中文(要求HTML使用unicode編碼),但中支持一種中文字體,開源。Flying Sauser實現html2pdf,糾錯能力差,支持多種中文字體(部分樣式不能識別),開源。

技術特點:基于java編程將html的css樣式做解析處理,目前僅對較簡單的頁面和樣式支持。對于css3的樣式和關聯復雜的css樣式兼容性極差。當頁面內容較長時,處理時間慢。參考地址:https://code.google.com/archive/p/flying-saucer/

測試結果:本實驗的測試頁面無法出來,普通的測試頁面效果如下:

html,pdf

測試說明:

通過測試發現,IText和Flying Sauser這兩個開源項目對css3的兼容性基本不行,通過查閱資料,發現這種技術比較陳舊,這個開源項目現在也沒有更新和維護了。對于簡單表格,統計數據的導出,更新的技術有bootstrap table,easyui datagrid表格導出。網上介紹的這種方案不建議使用。

4.PD4ML測試

PD4ML是純Java的類庫,使用HTML、CSS作為頁面布局和內容定義格式來生成PDF文檔的強大工具,可以簡化最終用戶生成PDF的工作。參考網站:http://www.pd4ml.com

該軟件的優點是:

支持的HTML標簽、CSS屬性較全,轉換失真比較小,可以使用HTML+CSS實現精確的布局控制。對網頁文件標簽、CSS語法錯誤的容錯性比較好。對不用額外的控制,就支持圖片的轉化輸出。

該軟件的缺點是:

不開源,最新的demo版本,下載測試以后,發現不支持中文轉換。必須購買商業版本才可以。(這里很坑,測試亂碼問題通不過,后面發現是本來就不支持)。破解后的一些舊版本可以解決亂碼問題,但是支持的css樣式沒有新版本的全。

測試結果:

html,pdf

測試說明:

新版本的中文亂碼,但是支持部分css樣式。老版本的破譯后,界面的樣式兼容性差,對bootsrtap的支持性低,就基本的可以出一個數據,展示圖片沒有問題??紤]到是收費軟件,并且性能也不夠完善,對于普通頁面可采用模板導出或其他的工具導出,不建議使用。

5.html2canvas測試

html2canvas是一個相當不錯的JavaScript類庫,它使用了html5和css3的一些新功能特性,實現了在客戶端對網頁進行截圖的功 能。html2canvas通過獲取頁面的DOM和元素的樣式信息,并將其渲染成canvas圖片,從而實現給頁面截圖的功能。它不需要來自服務器任何渲染,整張圖片都是在客戶端瀏覽器創建。當瀏覽器不支持Canvas時,將采用Flashcanvas或 ExplorerCanvas技術代替實現。以下瀏覽器能夠很好的支持該腳本:Firefox 3.5+, Google Chrome, Opera新的版本, IE9以上的瀏覽器。因為每個瀏覽器渲染頁面的方式都不盡相同,所以生成的圖片也不太一樣。雖然它目前還是處理開發階段,但還是很值得期待的。這個插件依賴于jQuery插件,建議使用最新版的。

不支持跨域圖片不能在瀏覽器插件中使用部分瀏覽器上不支持SVG圖片不支持Flash不支持ifream(可修改js原始代碼,支持ifream)

本次使用html2canvas做測試時,發現很多項目頁面可正常截圖,包括echart圖表。僅對少量css3的新特性不支持。在截圖效果上面較好。但是在測試應用時,發現了一個致命的問題,當頁面模塊調用html2canvas截圖后,發現原來頁面的部分css突然失效。跟蹤分析后,發現是html2canvas的js函數處理它不能識別的css樣式。特別是對隱藏和顯示的模塊,支持不友好。

html,pdf

頁面截圖效果如下:

html,pdf

但是原有頁面的css失效,頁面出現異常,隱藏的部分樣式,顯示的樣式展示混亂。

html,pdf

測試說明:

通過測試發現,html2canvas對bootstap的樣式支持較好。對css3的新特性如圓形圖片樣式支持行不好。它的主要優點是輕前端,對于改變原有頁面的樣式問題,可先導出圖片后,重新刷新一次頁面。

6.總結

通過對以上案例的測試,網上介紹的常用html轉換為pdf的方法,大多數就是簡單的html轉換可用,但是在實際應用中,還是存在諸多問題,難以應用。通過對這些方法的實現原理分析,可得出以下結論:

html網頁完整轉換為pdf,所有的方案均有不足。若只是部分表單頁面,html樣式盡量不采用css3的屬性,可用客戶端模式和html2canvas處理。html前端樣式發展快,css3新特性效果好,css定義了新的規則,語法。IText和Flying Sauser這樣的java轉換類根本兼容不了這些變化,因為無法及時寫出轉換的函數,并且這些開源項目是較老的技術,后期的開源團隊已經停止維護和更新了。PD4ML本質也是java處理css的樣式轉換,他是商業軟件,在兼容css3方面有團隊支持,相對IText和Flying Sauser在性能和功能方面都更強大。但對少部分css樣式也支持不好。并且中文亂碼問題解決也不便。針對客戶端瀏覽器內核模式,PhantomJS和wkhtmltopdf比較而言,PhantomJS更強大,截圖僅僅只是其中的一個小功能,通過它還可以做網頁分析,建議使用PhantomJS。html2canvas的截圖模式靈活,是輕量級的前端截圖工具。目前來說,部分功能不全,但整體效果還不錯,針對部分截圖影響原頁面的問題,可先截圖保存成功后,在刷新一次頁面,達到截圖導出到pdf的效果。

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助~如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持!


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品久久久久久久99热| 亚洲第一黄色网| 亚洲一区二区免费| 欧美日韩另类视频| 欧美精品在线极品| 欧美视频第一页| 亚洲国产欧美一区二区三区久久| 国产精品日韩在线一区| 欧美性开放视频| 日本在线精品视频| 日日骚久久av| 国产97在线|亚洲| 亚洲欧美制服另类日韩| 国产精品自拍小视频| 2019精品视频| 欧美丝袜一区二区三区| 欧美乱妇高清无乱码| 2019中文字幕在线免费观看| 国产精品中文久久久久久久| 九九热这里只有在线精品视| 亚洲一区二区三区sesese| 久久激情视频免费观看| 国产精品久久久91| 欧美黑人又粗大| 成人黄色av网| 国产精品盗摄久久久| 伊人久久免费视频| 三级精品视频久久久久| 97国产成人精品视频| 亚洲欧美日韩区| 亚洲欧美中文在线视频| 亚洲国产精品国自产拍av秋霞| 国内成人精品视频| 午夜精品福利视频| 免费av一区二区| 欧美视频中文字幕在线| 最近2019中文字幕mv免费看| 国产成人综合精品| 久久精品视频在线播放| 国产日韩欧美在线观看| 色悠悠久久88| 136fldh精品导航福利| 午夜精品蜜臀一区二区三区免费| 亚州欧美日韩中文视频| 国产不卡视频在线| 日韩精品小视频| 日韩国产精品视频| 一区二区欧美久久| 国产丝袜一区二区| 97超碰蝌蚪网人人做人人爽| 久久精品人人做人人爽| 日韩女优在线播放| 78色国产精品| 欧美日韩亚洲一区二区| 韩国国内大量揄拍精品视频| 国产精品热视频| 亚洲护士老师的毛茸茸最新章节| 最近更新的2019中文字幕| 国产精品99久久久久久久久| 色偷偷亚洲男人天堂| 欧美二区乱c黑人| 国产精品一区久久| 亚洲第一综合天堂另类专| 97精品国产aⅴ7777| 亚洲福利视频在线| 欧美成人精品一区二区三区| 欧美精品在线观看91| 91亚洲精品在线| 青青草国产精品一区二区| 欧美一区二区三区……| 欧美激情一区二区久久久| 日本一区二三区好的精华液| 自拍偷拍亚洲欧美| 欧美黑人一级爽快片淫片高清| 亚洲天堂av在线播放| 国产精品欧美日韩| 992tv成人免费影院| 欧美一级片久久久久久久| 欧美激情视频播放| 狠狠久久亚洲欧美专区| 一本色道久久88综合日韩精品| 国产精品第一视频| 国产综合久久久久| 欧美日韩成人免费| 国产精品中文在线| 亚洲在线免费看| 神马久久久久久| 国产成人精品视频在线观看| 成人a免费视频| 最近2019年好看中文字幕视频| 91久久国产精品91久久性色| 久久91亚洲精品中文字幕奶水| 91免费高清视频| 在线看国产精品| 在线观看日韩av| 欧美激情一二三| 久久精品视频免费播放| 日韩69视频在线观看| 亚洲最大在线视频| 亚洲激情视频网| 亚洲欧美国产日韩中文字幕| 久久精品国产久精国产一老狼| 国产成+人+综合+亚洲欧洲| 午夜精品99久久免费| 国产精品美女久久久久久免费| 欧美黑人性生活视频| 亚洲japanese制服美女| 欧美性猛交xxxx黑人猛交| 成人中文字幕+乱码+中文字幕| 日韩精品在线视频| 国产欧美日韩精品在线观看| 91影视免费在线观看| 亚洲女人天堂色在线7777| 日韩在线观看你懂的| 777777777亚洲妇女| 久久久久国产一区二区三区| 久久亚洲精品一区二区| 91高清免费视频| 色综合五月天导航| 亚洲国产成人爱av在线播放| 国产乱人伦真实精品视频| 成人久久久久久久| 欧美日韩精品在线播放| 欧美一级电影免费在线观看| 欧美日韩一区二区在线播放| 色狠狠av一区二区三区香蕉蜜桃| 中文精品99久久国产香蕉| 久久久亚洲欧洲日产国码aⅴ| 欧美区二区三区| 亚洲精品久久久久久久久| 伊人伊人伊人久久| 日韩av在线免费| 亚洲激情中文字幕| 国产成人福利视频| 亚洲伦理中文字幕| 久久青草精品视频免费观看| 亚洲国产精品人人爽夜夜爽| 欧美亚洲日本黄色| 红桃av永久久久| 精品久久香蕉国产线看观看亚洲| 2019国产精品自在线拍国产不卡| 日韩精品视频在线播放| 2019亚洲男人天堂| 精品国产一区二区三区久久狼黑人| 中文字幕欧美视频在线| 国产日韩一区在线| 国产精品视频xxx| 国产视频久久久| 91老司机在线| 亚洲电影免费观看高清| 亚洲第一av在线| 国产精品日韩在线| 亚洲999一在线观看www| 日本一欧美一欧美一亚洲视频| 亚洲视频视频在线| 色综合视频网站| 国产精品精品视频| 亚洲欧美激情一区| 亚洲香蕉伊综合在人在线视看| 日韩成人在线网站| 日韩69视频在线观看| 91精品国产777在线观看| 91网站免费观看| 国产精品第8页|