Web打印解決方案之證件套打的實(shí)現(xiàn)思路
在前面介紹過《Web打印解決方案之普通報(bào)表打印功能》的一片文章中提到過那個(gè)打印控件Lodop,做起套打來感覺還是挺方便的,至少位置調(diào)整界面不需要自己弄,位置嘛,也提供了自動(dòng)保存的功能,不需要理會(huì)。
一般的套打,包含了幾部分操作:打印預(yù)覽、打印維護(hù)、打印設(shè)計(jì)。
打印預(yù)覽和打印維護(hù)是面向終端用戶的,打印維護(hù)是指內(nèi)容不能修改刪除、但位置可以調(diào)整,給不同的打印機(jī)不同的尺寸打印提供調(diào)整位置的可能性。
打印設(shè)計(jì)是面向開發(fā)人員的,開始需要通過這個(gè)功能來設(shè)計(jì)好套打的界面,就是根據(jù)套打證件的背景圖片,大致擺放好各個(gè)內(nèi)容的位置。
大致的實(shí)現(xiàn)代碼如下所示:
<script language="javascript"> var LODOP=document.getElementById("LODOP");//這行語句是為了符合DTD規(guī)范 CheckLodop(); </script> <script language="javascript" type="text/javascript"> function Preview2() { CreateDataBill(); LODOP.PREVIEW(); }; function Setup2() { CreateDataBill(); LODOP.PRINT_SETUP(); }; function Design2() { CreateDataBill(); LODOP.PRINT_DESIGN(); }; function RealPrint() { CreateDataBill(); if (LODOP.PRINTA()) alert("已發(fā)出實(shí)際打印命令!"); else alert("放棄打??!"); }; function CreateDataBill() { LODOP.SET_PRINT_PAPER(10,10,762,533,"打印控件功能演示_Lodop功能_移動(dòng)公司發(fā)票套打"); LODOP.ADD_PRINT_TEXT(126,150,100,20,"郭德剛"); LODOP.SET_PRINT_STYLEA(1,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(151,150,100,20,"13954885177"); LODOP.SET_PRINT_STYLEA(2,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(125,584,99,20,"發(fā)票打印(第1次)"); LODOP.SET_PRINT_STYLEA(3,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(465,140,198,20,"陸百柒拾捌元叁角零分"); LODOP.SET_PRINT_STYLEA(4,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(465,599,70,20,"678.30"); LODOP.SET_PRINT_STYLEA(5,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(496,408,59,20,"H112063"); LODOP.SET_PRINT_STYLEA(6,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(191,58,100,20,"國內(nèi)漫游通話"); LODOP.SET_PRINT_STYLEA(7,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(191,217,100,20,"584.00"); LODOP.SET_PRINT_STYLEA(8,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(222,58,100,20,"增值業(yè)務(wù)費(fèi)"); LODOP.SET_PRINT_STYLEA(9,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(222,217,100,20,"48.30"); LODOP.SET_PRINT_STYLEA(10,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(251,58,100,20,"代收費(fèi)"); LODOP.SET_PRINT_STYLEA(11,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(251,217,100,20,"50.00"); LODOP.SET_PRINT_STYLEA(12,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(280,58,100,20,"優(yōu)惠費(fèi)"); LODOP.SET_PRINT_STYLEA(13,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(280,217,100,20,"4.00"); LODOP.SET_PRINT_STYLEA(14,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(98,101,150,20,"101081005747319387"); LODOP.SET_PRINT_STYLEA(15,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(97,307,150,20,"2008年10月19日 10:28:38"); LODOP.SET_PRINT_STYLEA(16,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(152,584,103,20,"138860016786"); LODOP.SET_PRINT_STYLEA(17,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(95,571,112,20,"06775516"); LODOP.SET_PRINT_STYLEA(18,"FontName","System"); LODOP.SET_PRINT_STYLEA(18,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(496,135,183,20,"2008年09月(20080901-20080930)"); LODOP.SET_PRINT_STYLEA(19,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(496,572,112,20,"-王府井中心店?duì)I"); LODOP.SET_PRINT_STYLEA(20,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(311,217,100,20,"678.30"); LODOP.SET_PRINT_STYLEA(21,"FontColor",16711680); LODOP.ADD_PRINT_TEXT(311,58,100,20,"費(fèi)用合計(jì)"); LODOP.SET_PRINT_STYLEA(22,"FontColor",16711680); LODOP.ADD_PRINT_SETUP_BKIMG("<img src=Report/證件背景.jpg' />"); LODOP.SET_SHOW_MODE ("BKIMG_IN_PREVIEW",1); } </script>
其中大部分內(nèi)容還是比較好理解的,不同的功能調(diào)用不同的函數(shù)Preview為預(yù)覽、Setup為維護(hù)、Design為設(shè)計(jì)。
在套打的時(shí)候,注意需要通過下面代碼來設(shè)置顯示背景圖片(打印的時(shí)候,是不打印背景的)。
LODOP.ADD_PRINT_SETUP_BKIMG("<img src=Report/證件背景.jpg' />"); LODOP.SET_SHOW_MODE ("BKIMG_IN_PREVIEW",1); //打印預(yù)覽時(shí)是否包含背景圖
另外,由于報(bào)表的內(nèi)容都是寫在HTML頁面中的,因此在動(dòng)態(tài)設(shè)置內(nèi)容的時(shí)候,一可以用腳本來讀取界面元素作為數(shù)據(jù)源,二可以通過后臺(tái)代碼自動(dòng)生成腳本代碼,輸出到前臺(tái)頁面中,看具體的需要了。
套打的預(yù)覽界面大致如下圖所示,其中藍(lán)色部分是需要打印的內(nèi)容,背景圖片是一個(gè)發(fā)票的樣板。
下面代碼是通過腳本獲取界面元素來取得相應(yīng)的內(nèi)容的,這種情況適合于界面上可能會(huì)修改一些打印的內(nèi)容的情景。
LODOP.ADD_PRINT_TEXT(95, 695, 250, 52, document.getElementById("txtCompanyName").innerText); //業(yè)戶名稱 LODOP.SET_PRINT_STYLEA(1, "FontSize", 14); LODOP.SET_PRINT_STYLEA(1, "Bold", 1); var licenseDate = document.getElementById("txtLicenseDate").value;//證件有效期 var licenseYear = ""; var licenseMonth = ""; var licenseDay = ""; if (licenseDate != null && licenseDate != "") { licenseYear = licenseDate.split("-")[0]; licenseMonth = licenseDate.split("-")[1]; licenseDay = (licenseDate.split("-")[2]).substr(0, 2); } LODOP.ADD_PRINT_TEXT(396, 190, 46, 22, validateYear); //有效期 結(jié)束 年 LODOP.SET_PRINT_STYLEA(6, "FontSize", 11); LODOP.SET_PRINT_STYLEA(6, "Bold", 1); LODOP.ADD_PRINT_TEXT(396, 253, 30, 22, validateMonth); //有效期 結(jié)束 月 LODOP.SET_PRINT_STYLEA(7, "FontSize", 11); LODOP.SET_PRINT_STYLEA(7, "Bold", 1); LODOP.ADD_PRINT_TEXT(396, 304, 32, 22, validateDay); //有效期 結(jié)束 日 LODOP.SET_PRINT_STYLEA(8, "FontSize", 11); LODOP.SET_PRINT_STYLEA(8, "Bold", 1);
最后附上它的設(shè)計(jì)界面,其中生成代碼功能可以生成用于靜態(tài)HTML中的內(nèi)容布局顯示,做一定的修改調(diào)整就可以用在動(dòng)態(tài)頁面中了。非常有用的一個(gè)功能。
以上所述是小編給大家介紹的Web打印解決方案之證件套打的實(shí)現(xiàn)思路,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
WebSocket的通信過程與實(shí)現(xiàn)方法詳解
這篇文章主要給大家愛介紹了關(guān)于WebSocket的通信過程與實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2018-04-04JavaScript使用百度ECharts插件繪制餅圖操作示例
這篇文章主要介紹了JavaScript使用百度ECharts插件繪制餅圖操作,結(jié)合實(shí)例形式分析了JavaScript使用百度ECharts插件繪制餅圖的原理、步驟及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-11-11JavaScript實(shí)現(xiàn)給對象添加一個(gè)只讀屬性
這篇文章主要為大家介紹了JavaScript如何給對象加一個(gè)只讀屬性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06JavaScript實(shí)現(xiàn)猜數(shù)字游戲
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05