php使用pdf2htmlex,转换 HTML 与 PDF 格式文档的神器
企業(yè) Web 項(xiàng)目開(kāi)發(fā)中經(jīng)常會(huì)有生產(chǎn) PDF 格式文檔的需求,例如 PDF 賬單下載,月末生成各種統(tǒng)計(jì)報(bào)表等等。我們要幫助企業(yè)實(shí)現(xiàn)自動(dòng)化,也就是說(shuō)無(wú)需人工干預(yù),程序能夠按需從 DB 中拿數(shù)據(jù)自主生成。
項(xiàng)目使用 PHP 開(kāi)發(fā),于是調(diào)研了一下 PHP 的 PDF 類(lèi)庫(kù),有?dompdf,TCPDF 之流,總的來(lái)說(shuō),各個(gè)項(xiàng)目主頁(yè)上自夸的成分居多,基本思想都是類(lèi)似的,即先用 HTML 寫(xiě)一個(gè)模板,每次往模板里填上數(shù)據(jù),就可以轉(zhuǎn)成
PDF 輸出。但真正用起來(lái)就會(huì)發(fā)現(xiàn)各種毛病各種坑爹,部分 CSS 屬性不支持啦,中文亂碼啦,諸如此類(lèi)。最終讓我們拋棄 dompdf 的貌似是分頁(yè)的一個(gè)大坑,據(jù)說(shuō)一個(gè)表格
轉(zhuǎn)換一下思路,其實(shí)我們只是要把 HTML 轉(zhuǎn)成 PDF 而已,并不是必須要使用 PHP 這種低效的語(yǔ)言來(lái)做它并不擅長(zhǎng)的事情。 Linux 下有沒(méi)有二進(jìn)制程序可以做這項(xiàng)工作呢?大殺氣登場(chǎng),撒花歡迎~
一、wkhtmltopdf:利用 webkit 內(nèi)核將 HTML 轉(zhuǎn)為 PDF
webkit 是一個(gè)高效、開(kāi)源的瀏覽器內(nèi)核,包括 Chrome 和 Safari 在內(nèi)的(當(dāng)然也包括國(guó)內(nèi)那些極速啥的)瀏覽器都使用了這個(gè)內(nèi)核。Chrome 打印當(dāng)前網(wǎng)頁(yè)的功能,其中有一個(gè)選項(xiàng)就是直接“保存為 PDF”。
wkhtmltopdf?就是這樣一個(gè)工具,使用 webkit 內(nèi)核的 PDF 渲染引擎來(lái)將 HTML 頁(yè)面轉(zhuǎn)換為 PDF。高保真,質(zhì)量很不錯(cuò),server 上安裝相關(guān)中文字體即可支持中文文檔。更重要的是,使用非常簡(jiǎn)單。
//將網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)換為 PDF
exec("wkhtml遇新是直朋能到分覽支體調(diào)topdf http://www.google.com google.pdf");
//將本地 HTML 文件轉(zhuǎn)為 PDF
exec("wkhtml遇新是直朋能到分覽支體調(diào)topdf my.html my.pdf");
?>
當(dāng)然它本身提供了一些 PHP 集成的方法,但我還是覺(jué)得直接用 exec 調(diào)用外部程序更方便一些。
HTML 源文件和生成的 PDF 文件對(duì)比效果圖——
關(guān)于中文渲染的問(wèn)題,只要在服務(wù)器上安裝相應(yīng)字體即可。如果是 CentOS 系統(tǒng),一個(gè)命令就能搞定:
$yum install fonts-chinese.noarch
另外注意在 HTML 文檔中也要指定字符集
———- 我是猥瑣的分割線(xiàn),割割更健康 ———-
二、pdf2htmlEX:將 PDF 轉(zhuǎn)為 HTML 網(wǎng)頁(yè)
反過(guò)來(lái),可否將 PDF 轉(zhuǎn)化為 HTML 網(wǎng)頁(yè)呢?(這樣蛋疼的需求,我等是無(wú)法預(yù)料的……)
pdf2htmlEX?的作者是一名中國(guó)人,他實(shí)現(xiàn)將了 PDF 轉(zhuǎn)換為 HTML,主要針對(duì)學(xué)術(shù)論文進(jìn)行優(yōu)化。這個(gè)工具的出現(xiàn)在Hacker News上引發(fā)了熱烈討論。看下
demo 你就會(huì)感嘆它的效果是多么驚艷:
它的用法也非常簡(jiǎn)單,適合各路 PhD 們展示論文用。
$pdf2htmlEX比抖朋要插支一圈不者地 /path/to/foobar.pdf
綜上
本文介紹了?wkhtmltopdf?和?pdf2htmlEX?這兩個(gè)將 HTML 和 PDF 格式文檔互相轉(zhuǎn)換的神器。但是其實(shí)這篇 blog 寫(xiě)來(lái)只是因?yàn)閴m埃落定太久沒(méi)更新了,寫(xiě)點(diǎn)東西更新一下而已
— EOF —
本文來(lái)源于網(wǎng)絡(luò):查看?>https://blog.csdn.net/wide288/article/details/41982255
總結(jié)
以上是生活随笔為你收集整理的php使用pdf2htmlex,转换 HTML 与 PDF 格式文档的神器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网红“美七” 否认炒作 曾因泰国报平安引
- 下一篇: php zhegnze_php 正则表达