應用web化,不論對開發商,還是對用戶來說,實在是一種很經濟的選擇,因為基於web的應用,客戶端的規則很簡單,容易學習,容易維護,容易發布。但對程序員來說,因為瀏覽器的局限性,卻要面對很多挑戰。怎么樣來進行基於web的套打,就是這么一個令多數程序員頭痛不已的問題。
基於web的套打,難度在於要將瀏覽器中呈現的html,精確地打印到票據中,而且能夠實現對分頁位置的控制。下面就ie瀏覽器所能采用的套打解決方案,來個匯總分析,希望對大家有所幫助。
jatoolsPrinter 是一款實現網頁套打的免費工具。該工具的特點是可以直接對web頁面進行精確的分頁打印,這不僅使“會設計網頁就會做網頁套打”成為可能,也使項目經理們擺脫了預算緊張的壓力。jatoolsPrinter通過在網頁中嵌入控件,解決了web客戶端精確打印,批量打印,打印配置自動保留等問題。jatoolsPrinter 官方正式免費版,支持ie6+,http://printfree.jatools.com。
功能特點:
真正免費,不加水印,沒有ip或域名限制,不限時間,兼容ie6+
無須注冊,下載即用
提供經過微軟數字簽名的cab自動安裝包,安裝更方便
長期升級保障,免費論壇支持,讓你無后顧之憂
穩定可靠,啟動速度遠勝同類產品
常用功能集於一身,簡約而不簡單,軟件大小只有84k
本文主要介紹jatoolsPrinter打印控件來完成web的打印功能,這個控件已經把打印功能封裝的非常好,主要是把這個控件引入,之后寫一些簡單的js代碼就能完成相應的打印功能。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <!-- 插入打印控件 --> <object id="jatoolsPrinter" classid="CLSID:B43D3361-D075-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=5,7,0,0"> </object> <script type="text/javascript"> function doPrint(how) { //打印文檔對象 var myDoc = { documents: document, // 打印頁面(div)們在本文檔中 copyrights: '傑創軟件擁有版權 www.jatools.com' // 版權聲明必須 }; // 調用打印方法 if (how == '打印預覽...') jatoolsPrinter.printPreview(myDoc); // 打印預覽 else if (how == '打印...') jatoolsPrinter.print(myDoc, true); // 打印前彈出打印設置對話框 else jatoolsPrinter.print(myDoc, false); // 不彈出對話框打印 } </script> </head> <body> <form id="form1" runat="server"> <div id='page1' style='width:300px;height:300px;'> test </div> <input type="button" value="打印預覽..." onclick="doPrint('打印預覽...')"/> <input type="button" value="打印..." onclick="doPrint('打印...')"/> <input type="button" value="打印" onclick="doPrint('打印')"/> </form> </body> </html>
主要分幾個步驟:
一、引入打印控件jatoolsPrinter
<!-- 插入打印控件 --> <object id="jatoolsPrinter" classid="CLSID:B43D3361-D075-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=5,7,0,0"> </object>
二、給要打印的div取id名
三、編寫js代碼實現打印div的功能
(注意:在同一頁面中,有多個可打印文檔,他們可以用page_div_prefix屬性來區別page_div_prefix前綴+page+頁序號 構成可打印div的id,如前綴為 'report1' ,則找到以 'report1page1'為id的div作為文檔首頁該屬性,默認值為空)
注意事項:
1. 控件在打印指定div對象時,如果紙張太小不夠打印時,超出部分將被截掉(clip)。
2. 被指定的div中的內容,可以是html任何可見對象,圖片,flash,或文本等等。
3. 控件打印時,邊距可設,不設則取打印機默認值。
4. div的id必須連續,如果你的div,存在 'page1'、'page2'、'page4',而不存在'page3',則控件只打印前兩頁,'page4'不會被打印。
5. div對象在頁面中的位置,可以是隨意的,比如,page1顯示在page2后面,也是合法的。
6. 指定的div會被打印,沒被指定的html元素將不會被打印,比如,本示例中的‘打印’按鈕,不會被打印。
7. copyrights屬性是版權信息,必須寫。