您好,登錄后才能下訂單哦!
這篇文章主要介紹“HTMl轉(zhuǎn)PDF的方法”,在日常操作中,相信很多人在HTMl轉(zhuǎn)PDF的方法問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”HTMl轉(zhuǎn)PDF的方法”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
公司需要將官網(wǎng)上的文章都打包成pdf,由于文章是通過(guò)后臺(tái)富文本生成的,內(nèi)容中帶有HTML標(biāo)簽。所以只能夠?qū)?nèi)容放到html中,然后再下載。
iText是非常著名的快速產(chǎn)生PDF文件的Java類庫(kù)
優(yōu)點(diǎn):
1.非常成熟的Java類庫(kù),相關(guān)幫助文檔很多,上手快。
2.功能全面,使用方便,可以通過(guò)代碼直接生成POF文檔。
缺點(diǎn):
1.雖然支持html轉(zhuǎn)pdf,但有點(diǎn)HTML標(biāo)簽,css屬性不支持,轉(zhuǎn)化結(jié)果可能和原文檔不一致。
2.不支持外部css文件
3.與亞洲語(yǔ)言支持包itext-asian.jar配合不是很好,容易中文亂碼問(wèn)題
Flying Saucer 用純 Java 編寫的,可以將 XML/XHTML 應(yīng)用 CSS2.1 樣式渲染為 PDF、圖片。此庫(kù)基本上能實(shí)現(xiàn) CSS 2.1 的整體性, 并且完全符合 W3C 規(guī)范。
優(yōu)點(diǎn):
1.支持外部css文件
2.可以直接通過(guò)輸入頁(yè)面地址來(lái)生成PDF
缺點(diǎn):
1.很多css都支持得不好,哪些樣式不支持還要自己慢慢試,相當(dāng)痛苦的過(guò)程。
2.大寫標(biāo)簽不識(shí)別!比如DIV TD 等等統(tǒng)統(tǒng)不識(shí)別!說(shuō)到底就是大小寫敏感。
3.反正就是各種小細(xì)節(jié)需要把控,不太熟悉的話,十分容易出bug。
wkhtmltox是一個(gè)工具,類似飯桶(phantomjs)的工具
優(yōu)點(diǎn):
1.可以直接通過(guò)輸入頁(yè)面地址來(lái)生成PDF
2.對(duì)HTML和CSS支持非常好,支持外部css
3.使用簡(jiǎn)單,操作方便。
缺點(diǎn): 沒(méi)有發(fā)現(xiàn)太明顯的硬傷,好像下載的頁(yè)面非常大時(shí),會(huì)導(dǎo)致生成失敗。
為什么要介紹上面這些呢?
官網(wǎng)下載地址: https://wkhtmltopdf.org/downloads.html
上傳wkhtmltox到服務(wù)器
rz
解壓、安裝(tar -Jxf)
解壓xz文件: xz -d wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
解壓安裝tar文件: tar -xvf wkhtmltox-0.12.4_linux-generic-amd64.tar
將程序拷貝到/usr/bin/目錄中,這樣可以任意目錄執(zhí)行。
cp wkhtmltox/bin/wkhtmltopdf /usr/bin/
使用Wkhtmltopdf
wkhtmltopdf http://www.baidu.com /data/tmp/demo.pdf
5.如果生成pdf失敗,可能是缺少相關(guān)的包,進(jìn)入usr/lib中根據(jù)錯(cuò)誤信息安裝對(duì)應(yīng)的包
cd /usr/lib [daxiang[@localhost](https://my.oschina.net/u/570656) lib]$ sudo yum install libXrender* [daxiang[@localhost](https://my.oschina.net/u/570656) lib]$ sudo yum install libXext
public class HtmlToPdfUtil { public static String getCommand(String htmlUrl, String filePath) { StringBuilder command = new StringBuilder(); String system = System.getProperty("os.name"); if (system.contains("Windows")) { command.append("D:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe "); } else if (system.contains("Linux")) { command.append("wkhtmltopdf "); } // command.append("--encoding utf-8 "); //設(shè)置文字編碼為utf-8 // command.append("--header-center 易觀 "); //在頁(yè)眉中心顯示易觀 // command.append("--header-line "); //顯示一條線在頁(yè)眉下 // command.append("--margin-left 5cm "); //頁(yè)面左移5cm // command.append("--footer-right [page]/[topage] "); //頁(yè)尾右下角顯示頁(yè)數(shù) command.append(htmlUrl).append(" ").append(filePath); return command.toString(); } public static void main(String[] args) throws Exception { String command = getCommand("https://www.baidu.com/", "e:/demo3.pdf"); Process process = Runtime.getRuntime().exec(command); process.waitFor(); // 這個(gè)調(diào)用比較關(guān)鍵,就是等當(dāng)前命令執(zhí)行完成后再往下執(zhí)行 System.out.println("執(zhí)行完成"); } }
中文參數(shù)詳解 :http://blog.csdn.net/zhangkezhi_471885889/article/details/52184744
使用方式:
linux:wkhtmltopdf [OPTIONS]… [More input files] windows:wkhtmltopdf.exe [OPTIONS]… [More input files]
案例:
wkhtmltopdf --footer-right [page]/[topage] http://www.baidu.com /data/baidu.pdf wkhtmltopdf --header-center 報(bào)表 --outline --header-line --margin-top 2cm http://www.baidu.com /data/baidu.pdf
1.建立模板頁(yè)面: http://localhost:8080/templateView
2.利用wkhtmltopdf生成PDF
1.只有通過(guò)模板引擎(velocity、Thymeleaf)渲染的web頁(yè)面才能生成PDF
2.由于命令是通過(guò)空格號(hào)來(lái)識(shí)別的,如果生成的PDF文件名中包含空格,會(huì)導(dǎo)致生成失敗。
springboot推薦使用Thymeleaf做為模板引擎,以后springboot項(xiàng)目中要用到模板引擎,建議大家都能統(tǒng)一使用Thymeleaf。
到此,關(guān)于“HTMl轉(zhuǎn)PDF的方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。