当前位置: 首页 > Web前端 > HTML

说说Lodop的使用心得

时间:2023-03-28 01:25:51 HTML

文章背景:笔者在2018年初接触到lodop,??由于公司业务线调整,准备开发一款国际旅行入境手续的终端设备.起初,公司决定让Android工程师来实现它,后来评价无法实现。最后决定让前端工程师实现。接到任务后,一开始想用原生的JavaScript来实现。经过评估,我发现原生JavaScript不仅功能单一而且效率低下,一些复杂的场景无法实现。经过一系列的评估和分析,我最终选择了使用JavaScript扩展LODOP来实现它。写作目的:作者在使用LODOP的开发过程中没有相关的成型案例可以参考。您只能一遍又一遍地阅读文档。俗话说,一步一个脚印,写这篇文章的目的是帮助有相关开发需求的开发者有一个可以借鉴的案例。少踩坑,避免作者经历过的痛苦过程。项目介绍:笔者开发的这款设备主要集成了泰国、越南、新加坡、老挝、菲律宾、柬埔寨、日本、韩国、缅甸、摩洛哥、美国等国家入境手续的办理,以及打印护照照片和海外保险单等功能。场景分析:在开始场景分析之前,首先搭建开发环境。步骤如下:1.首先下载并安装LODOP2。安装相关打印机驱动3.将相关文件(CLodopfuncs.js||LodopFuncs.js)引入项目中我在lodop开发之旅中。如果不知道安装包和文件,请搜索LODOP官网场景一:我要打印泰国入境手续。泰国的入境证件包括入境卡和落地签证。落地签证需要一张2英寸的护照照片。这里涉及到一个订单同时启动2~3台打印机同时工作的情况。//实现打印的代码letLODOP;LODOP.PRINT_INIT("泰国入境表格");//打印机初始化LODOP.SET_PRINTER_INDEX(2);//通过[指定打印机](http://www.lodop.net/demolist/PrintSample7.html)Get)LODOP.SET_PRINT_MODE("PRINT_DEFAULTSOURCE",1);//控制打印机的纸张来源(自动、纸盘、手动等);LODOP.SET_PRINT_PAGESIZE(2,"","","A5");//指定打印机纸盒打印方向的纸张尺寸(A5为纸张类型,打印机可手动设置,纸盒可以通过设置打印机的纸张类型来指定)LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true);//状态捕获LODOP.SET_PRINT_MODE("RESELECT_PRINTER",true);//设置打印机是否可以重选。LODOP.SET_PRINT_MODE("RESELECT_PAGESIZE",true);//设置纸张是否可以重选。LODOP.ADD_PRINT_HTML();ThailandEntry(surname,name)//打印内容的方法LODOP.PRINT();//执行打印//代码实现打印内容的代码ThailandEntry(surname,name){LODOP=getLodop();LODOP.SET_PRINT_PAGESIZE(2,2100,2970,"");LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE",1);//获取状态码的关键语句LODOP.ADD_PRINT_TEXT(274,309,80,16,surname);//打印内容及位置设置LODOP.SET_PRINT_STYLEA(0,"FontSize",12);//打印内容样式设置LODOP.ADD_PRINT_TEXT(305,329,120,16,name);LODOP.SET_PRINT_STYLEA(0,"FontSize",12);}ThailandEntry函数的代码可以通过打印落地签设计和入境卡代码直接生成。类似于打印机和纸箱的指定,照片与上面略有不同LODOP.SET_PRINT_PAGESIZE(1,1480,2100,"");//set设置纸张类型LODOP.SET_PRINTER_INDEX(1);//指定printerLODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true);//状态捕获LODOP.SET_PRINT_MODE("RESELECT_PRINTER",true);//设置打印机是否可以重选。LODOP.SET_PRINT_MODE("RESELECT_PAGESIZE",true);//设置纸张是否可以重选。让ImageStr=$(".imagesFrame").html('

'+''+'
');LODOP.ADD_PRINT_HTM(0,0,1020,1600,ImageStr);//区别于入境卡和落地签LODOP.PRINT();//打印重要的东西说三遍:不要试图通过css样式来控制img元素的大小(结果是图片模糊扭曲)。解决方法:直接手动设置打印机的排版方式。登陆申请表、报关单、证件照片。需要在落地签上添加二维码,连接柬埔寨入境签证预审签发控制系统(该系统也是笔者开发的)ADD_PRINT_BARCODE(Top,Left,Width,Height,BarCodeType,BarCodeValue);//参数介绍Top对应条码左上角到页面顶部的距离Left对应条码左上角到页面左侧的距离Width的总宽度条码,计量单位为px(1px=1/96英寸)Height条码的总高度(一维条码包含文本高度)BarCodeType条码类型(规定)nameBarCodeValue条码值(需要获取的信息)以上代码可以添加打印内容的功能,请参考打印条码场景三:当我要打印越南入境信息时,越南入境材料包括落地签证和照片,但越南落地签证n需要双面填写信息,打印机只支持A4纸双面打印。SET_PRINT_MODE("PRINT_DUPLEX",2);0-无控制1-无双面2-双面(长边装订)3-小册子双面(短边装订_长边水平)SET_PRINT_MODE("PRINT_DEFAULTSOURCE",7);1-纸盒4-手动7-自动0-无控制以上表示打印机自动双面打印(更多双面打印请参考双面打印)LODOP.SET_PRINT_PAGESIZE(0,0,0,"A4");//指定纸张类型和纸盒//前面内容LODOP.ADD_PRINT_TEXT(190,240,173,22,Name);LODOP.SET_PRINT_STYLEA(0,"字体大小",12);............LODOP.NewPage();//区分正反要打印的信息//背面内容LODOP.ADD_PRINT_TEXT(630,395,183,22,EntCity);LODOP。SET_PRINT_STYLEA(0,"字体大小",12);................................}以上内容为双面打印的方法。设置场景4:开发过程中肯定遇到过当打印队列任务太多,纸张不够用的时候,此时获取打印机的状态是非常有必要的。LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true);//获取JOB码LODOP.GET_VALUE("PRINT_STATUS_XXX","JOB码值")//通过JOB码获取打印状态信息和最终结果注意部分型号打印机返回的status如果代码与文档中的代码描述不一致,请重新判断。详细的打印机状态信息请参考打印机状态。
总结以上就是笔者想要分享的lodop的常见使用场景。空间有限。更多应用场景和Lodop功能,请参考lodop官网在线示例。