最近在做一個打印程序,要實現批量打印功能,在網上找了很多天,也在tp官網咨詢大牛們,對大家的的提議我一一進行了研究,總結如下:
要實現批量打印可以有兩個辦法:
一是利用專業的報表程序,能實現十分復雜的需求,但學習報表也是很痛苦的一件事,我專心研究了一天都沒啥進展,也許我實在太菜了。這種方法推薦銳浪報表,免費還好用。
二是利用js插件實現,也在網上找了很多,最后感謝hunduncn,他建議我使用lodop(詳見:http://www.thinkphp.cn/topic/12938.html),由於對html+css十分熟悉,所以上手不難,真的很好用。
Lodop(標音:勞道譜,俗稱:露肚皮)是專業WEB控件,用它既可裁剪輸出頁面內容,又可用程序代碼直接實現復雜打印。控件功能強大,卻簡單易用,所有調用如同JavaScript擴展語句。官網:http://www.lodop.net/,從官網下載的程序中有很多例子,也非常全面。
下面奉上代碼:
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>無標題文檔</title>
- <script language="javascript" src="LodopFuncs.js"></script>
- </head>
- <body>
- <form id="form1">
- 11111
- </form>
- <a href="javascript:prn1_preview()">打印預覽</a><br/>
- <a href="javascript:prn1_print()">直接打印</a>
- <script language="javascript" type="text/javascript">
- var LODOP; //聲明為全局變量
- function prn1_preview() {
- CreateOneFormPage();
- LODOP.PREVIEW();
- };
- function prn1_print() {
- CreateOneFormPage();
- LODOP.PRINT();
- };
- function CreateOneFormPage(){
- LODOP=getLodop();
- LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_表單一");
- LODOP.SET_PRINT_STYLE("FontSize",18);
- LODOP.SET_PRINT_STYLE("Bold",1);
- LODOP.ADD_PRINT_TEXT(50,231,260,39,"");
- LODOP.ADD_PRINT_HTM(88,200,350,600,document.getElementById("form1").innerHTML);
- };
- </script>
- </body>
- </html>
復制代碼
應該都能看懂,通過id操作,要是實現打印時候的樣式導入,代碼如下:
- function CreateOneFormPage(){
- LODOP=getLodop();
- var strStyleCSS="<link href='print.css' type='text/css' rel='stylesheet'>";
- var strFormHtml=strStyleCSS+"<body>"+document.getElementById("form1").innerHTML+"</body>";
- LODOP.PRINT_INIT("打印准考證");
- LODOP.ADD_PRINT_HTM(0,0,"100%","100%",strFormHtml);
- };
復制代碼
ps:lodop的A4紙張,打印區域大小為758px*1090px