由于以前未接触过套打,一直觉得套打是一个比较神秘和麻烦的事情,因为打印机的位置总是需要调整的,你总不能硬编码吧?但是如果位置可调,有需要直观一些来处理,那就比较麻烦了。

在前面介绍过《Web打印的解决方案之普通报表打印》的一片文章中提到过那个打印控件Lodop,做起套打来感觉还是挺方便的,至少位置调整界面不需要自己弄,位置嘛,也提供了自动保存的功能,不需要理会。

一般的套打,包含了几部分操作:打印预览、打印维护、打印设计。

打印预览和打印维护是面向终端用户的,打印维护是指内容不能修改删除、但位置可以调整,给不同的打印机不同的尺寸打印提供调整位置的可能性。

打印设计是面向开发人员的,开始需要通过这个功能来设计好套打的界面,就是根据套打证件的背景图片,大致摆放好各个内容的位置。

大致的实现代码如下所示:


<script language="javascript">
    var LODOP=document.getElementById("LODOP");//这行语句是为了符合DTD规范
    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("已发出实际打印命令!"); 
        else 
           alert("放弃打印!"); 
    };    
    
function CreateDataBill() {
        LODOP.SET_PRINT_PAPER(10,10,762,533,"打印控件功能演示_Lodop功能_移动公司发票套打");
        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,"发票打印(第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,"国内漫游通话");
        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,"增值业务费");
        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,"代收费");
        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,"优惠费");
        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,"-王府井中心店营");
        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,"费用合计");
        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> 

其中大部分内容还是比较好理解的,不同的功能调用不同的函数Preview为预览、Setup为维护、Design为设计。

在套打的时候,注意需要通过下面代码来设置显示背景图片(打印的时候,是不打印背景的)。

        LODOP.ADD_PRINT_SETUP_BKIMG("<img src=Report/证件背景.jpg' />");
        LODOP.SET_SHOW_MODE ("BKIMG_IN_PREVIEW",1); //打印预览时是否包含背景图

另外,由于报表的内容都是写在HTML页面中的,因此在动态设置内容的时候,一可以用脚本来读取界面元素作为数据源,二可以通过后台代码自动生成脚本代码,输出到前台页面中,看具体的需要了。

套打的预览界面大致如下图所示,其中蓝色部分是需要打印的内容,背景图片是一个发票的样板。

下面代码是通过脚本获取界面元素来取得相应的内容的,这种情况适合于界面上可能会修改一些打印的内容的情景。


        LODOP.ADD_PRINT_TEXT(95, 695, 250, 52, document.getElementById("txtCompanyName").innerText); //业户名称
        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); //有效期 结束 年 
        LODOP.SET_PRINT_STYLEA(6, "FontSize", 11);
        LODOP.SET_PRINT_STYLEA(6, "Bold", 1);
        LODOP.ADD_PRINT_TEXT(396, 253, 30, 22, validateMonth); //有效期 结束 月
        LODOP.SET_PRINT_STYLEA(7, "FontSize", 11);
        LODOP.SET_PRINT_STYLEA(7, "Bold", 1);
        LODOP.ADD_PRINT_TEXT(396, 304, 32, 22, validateDay); //有效期 结束 日
        LODOP.SET_PRINT_STYLEA(8, "FontSize", 11);
        LODOP.SET_PRINT_STYLEA(8, "Bold", 1);

最后附上它的设计界面,其中生成代码功能可以生成用于静态HTML中的内容布局显示,做一定的修改调整就可以用在动态页面中了。非常有用的一个功能。

Web打印的解决方案之证件套打的更多相关文章

  1. Web打印控件Lodop实现证件套打

    第一次接触Lodop大概是在两年前了,那时候研究Lodop主要是为了验证它能不能实现打印时在不修改内容的前提下调整样式,结果是ok的,如今又一次接触它,是因为工作中需要使用它了,于是再一次碰面 Lod ...

  2. web打印难题—背景不打印的简单不完美解决方案

    web打印在一些开发中是比较常见的需求,最简单的办法是使用css print进行控制:对于一些建议可以参考http://slodive.com/web-development/css-print-pa ...

  3. Web打印控件

    Lodop是什么? 有人说她是Web打印控件,因为她能打印.在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来: 有人说她是打印编程接口,因为她介于浏览器和打印设备之间,是个通道和桥梁,几 ...

  4. 2013第39周一Web打印

    2013第39周一Web打印 项目中遇到了Java Web打印问题,简单调用IE浏览器的打印不能完全满足要求,于是就搜集了Web打印相关的主题,简单汇总一下.web打印难点在分页.页面纸张设置,页眉页 ...

  5. WEB打印的几种方案

    -------------------------------------------一  基于Web的打印方案比较分析-------------------------------- 基于web的套 ...

  6. web打印小结

    项目中有个需求是将winform客户端的打印,移到网页上由客户自行打印,打印要求是根据一定的格式实现套打. 当时的解决方案是使用PDF打印: 1. 准备好套打格式的底图: 2.打开底图,将动态内容画到 ...

  7. 专业的web打印插件

    Lodop是什么?参考官方网站:http://www.lodop.net/ 有人说她是Web打印控件,因为她能打印.在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来: 有人说她是打印编程 ...

  8. 手把手让你实现开源企业级web高并发解决方案(lvs+heartbeat+varnish+nginx+eAccelerator+memcached)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeze.blog.51cto.com/1846439/677348 此文凝聚 ...

  9. Web打印的处理 方案之普通报表打印

    做过许多 的Web项目,大多数在打印页面内容的时刻 ,采用的都是议决 Javascript调用系统内置的打印要领 执行 打印,也就是调用 PrintControl.ExecWB(?,?)实现直接打印和 ...

随机推荐

  1. Centos7 rsync+inotify实现实时同步更新

    inotify slave部署      把master上指定文件下载到本地的主机指定目录 yum install rsync –y [root@localhost ~]# useradd rsync ...

  2. RabbitMQ基本概念(四)-服务详细配置与日常监控管理

    RabbitMQ服务管理 启动服务:rabbitmq-server -detached[ /usr/local/rabbitmq/sbin/rabbitmq-server -detached ] 查看 ...

  3. python之处理excel表格

    xlrd ​ xlrd是python中一个第三方的用于读取excle表格的模块,很多企业在没有使用计算机管理前大多使用表格来管理数据,所以导入表格还是非常常用的! 安装xlrd pip install ...

  4. Spring 创建Bean的6种方式

    前言 本文讲解了在Spring 应用中创建Bean的多种方式,包括自动创建,以及手动创建注入方式,实际开发中可以根据业务场景选择合适的方案. 方式1: 使用Spring XML方式配置,该方式用于在纯 ...

  5. 机器学习笔记6:K-Means

    目录 目标函数 目标函数的表现函数 针对u和r求解: 最优解的表达式的意义: K-means聚类的形象化展示 聚类前 第一轮循环 第二轮循环 第三轮循环 最终结果 演示代码: 关于K-means的几个 ...

  6. 机器学习笔记4:SVM支持向量积的推导过程

    内容来自:https://github.com/GreedyAIAcademy/Machine-Learning 最初 支持向量机的目的:找到一条好的分割线 什么杨的分割线最好? 有最大间隔的分割线最 ...

  7. P5022 旅行[基环树]

    以后必须学会面向数据编程!看半天题目不知道咋写直接爆搜,结果分少的可怜,还不如直接贪搞个60分. 观察数据,发现图至多存在一个环. 显然,如果没有环,这个题不跟你多bb,直接贪就完事了,线性复杂度. ...

  8. 利用反射与dom4j读取javabean生成对应XML

    项目中需要自定义生成一个xml,要把Javabean中的属性拼接一个xml,例如要生成以下xml <?xml version="1.0" encoding="gb2 ...

  9. jmeter,badboy,jar包文件 常数吞吐量计时器?

    badboy录制脚本 1.按f2 红色开始录制 URL输入:https://www.so.com/ 2.搜索框输入zxw 回车键搜索 3.选中关键字(刮例如zxw软件——>tools——> ...

  10. spark的RDDAPI总结

    下面是RDD的基础操作API介绍: 操作类型 函数名 作用 转化操作 map() 参数是函数,函数应用于RDD每一个元素,返回值是新的RDD flatMap() 参数是函数,函数应用于RDD每一个元素 ...