轉(zhuǎn)帖|行業(yè)資訊|編輯:王香|2016-12-22 10:09:16.000|閱讀 2258 次
概述:尋找一個(gè)好的打印方法是各行各業(yè)迫切的需求,經(jīng)過幾番折騰,借道輸出PDF,PHP抓取目標(biāo)的HTML代碼,然后輸出到指定的解析器,再生成最終的打印格式,成為人們的終極選擇。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
ERP系統(tǒng)進(jìn)入尾聲,各種送貨單、退貨單、合同、對賬單等等一系列的東東排著隊(duì)調(diào)打印格式。HTML5+CSS3已經(jīng)這樣流行,然則眼下,基于CSS3的打印控制,居然還處于原始部落階段,Chrome、Firefox、Edge等連簡單的@page都支持得不完善。經(jīng)過一番折騰,終于找到好的解決方案,即借道輸出PDF,PHP抓取目標(biāo)的HTML代碼,然后輸出到指定的解析器,再生成最終的打印格式。
實(shí)際上,這個(gè)模式里:
于是打印問題迎刃而解。
本文推薦兩個(gè)可用的類庫:和。這兩位都是跨平臺系統(tǒng)支持,并且不需要內(nèi)嵌于php,不需要有任何擔(dān)心。這兩貨都需要在官網(wǎng)下載安裝,如果是windows,記得安裝的時(shí)候別放在C盤,不然會(huì)無法執(zhí)行。
php調(diào)用:
Prince:下載他官方的這個(gè)類庫:Prince for php。順帶說,Prince的類庫里支持.net、Java、Python、Prel等等。
Snappy:這個(gè)是國外某開發(fā)者基于wkhtmltopdf的php composer擴(kuò)展,直接在你項(xiàng)目中執(zhí)行:composer require knplabs/knp-snappy,即可。。
Prince和wkhtmltopdf,實(shí)際上就是一個(gè)html5+css3的解析器,并且是完整支持css3 @page部分的打印特性的功能。并且具備生成PDF的功能。其中Prince是收費(fèi)的,但他提供免費(fèi)使用License,美中不足的地方就是生成PDF預(yù)覽時(shí),第一頁右上角會(huì)有一個(gè)P字的icon,不過在打印的時(shí)候就會(huì)消失掉。
兩者比較,Prince對中文樣式的支持更好(可能wkhtmltopdf是因?yàn)槲业腃SS寫法有問題,沒有針對@media print),修改中文字體,wkhtmltopdf還是會(huì)用默認(rèn)的宋體輸出,而Prince則是你指定的字體。
兩者的調(diào)用代碼都很簡單。
Prince部分:
<?php require '../bootstrap.php'; $prince = new \xErp\Helper\Prince('D:\\prince\\prince-10r7-win64\\bin\\prince.exe'); header('Content-Type: application/pdf'); header('Content-Disposition: inline; filename="foo.pdf"'); $prince->convert_file_to_passthru('//www.163.com');
Snappy部分:
<?php require '../bootstrap.php'; use Knp\Snappy\Pdf; $snappy = new Pdf('D:\xampp\wkhtmltopdf\bin\\wkhtmltopdf.exe'); header('Content-Type: application/pdf'); //header('Content-Disposition: attachment; filename="file.pdf"'); print $snappy->getOutput('//www.163.com');
就是這樣酸爽,再也不用怕客戶改打印格式了,隨便改吧,親。
無圖無真相,來個(gè)截圖好了。
好像這樣的頁面,實(shí)際上是基于HTML生成的,調(diào)試只需調(diào)試HTML+CSS即可,截圖如下:
用HTML+CSS調(diào)打印,基本上一個(gè)格式,最多不超過1個(gè)小時(shí),基本上就能調(diào)完。這樣后期,管你有多少分報(bào)表,我統(tǒng)一用//erp/print/報(bào)名類型/報(bào)表ID.ext的url,.html就是請求普通的html輸出,.pdf就是請求將html輸出pdf,真是要多快有多快啊!
本文轉(zhuǎn)自://www.oschina.net/
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn