Web打印的解决方案之证件套打

简介:

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

在前面介绍过《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打印的解决方案之证件套打,如需转载请自行联系原博主。



 

目录
相关文章
|
6月前
|
前端开发 API 数据安全/隐私保护
Web前端开发中的跨域资源共享(CORS)解决方案
【2月更文挑战第5天】在Web前端开发中,跨域资源共享(CORS)是一个常见的挑战。本文将探讨CORS的概念和原理,并介绍一些常用的解决方案,包括服务器端配置和前端处理方法,帮助开发者更好地应对跨域请求问题。
264 4
|
6月前
|
存储 移动开发 JSON
H5学习之路之Web存储解决方案
H5学习之路之Web存储解决方案
60 0
|
17天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
75 3
|
4月前
|
SQL 存储 安全
PHP 与现代 Web 应用的安全挑战与解决方案
随着 Web 应用的发展,PHP 作为一种广泛使用的服务器端脚本语言,面临着越来越复杂的安全挑战。本文探讨了当前 PHP 开发中常见的安全问题,并提供了相应的解决方案,帮助开发者构建更安全可靠的 Web 应用。 【7月更文挑战第8天】
68 1
|
6月前
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
|
20天前
|
移动开发 前端开发 小程序
浅谈-web屏幕适配的解决方案
浅谈-web屏幕适配的解决方案
31 0
浅谈-web屏幕适配的解决方案
|
14天前
|
JavaScript 前端开发 安全
轻松上手Web Worker:多线程解决方案的使用方法与实战指南
轻松上手Web Worker:多线程解决方案的使用方法与实战指南
34 0
|
2月前
|
前端开发 Python
前后端分离的进化:Python Web项目中的WebSocket实时通信解决方案
在现代Web开发领域,前后端分离已成为一种主流架构模式,它促进了开发效率、提升了应用的可维护性和可扩展性。随着实时数据交互需求的日益增长,WebSocket作为一种在单个长连接上进行全双工通讯的协议,成为了实现前后端实时通信的理想选择。在Python Web项目中,结合Flask框架与Flask-SocketIO库,我们可以轻松实现WebSocket的实时通信功能。
50 2
|
21天前
|
Java 应用服务中间件 Spring
【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
20 0
|
4月前
|
前端开发 Python
前后端分离的进化:Python Web项目中的WebSocket实时通信解决方案
【7月更文挑战第18天】在Python的Flask框架中,结合Flask-SocketIO库可轻松实现WebSocket实时通信,促进前后端分离项目中的高效交互。示例展示了一个简单的聊天应用:Flask路由渲染HTML,客户端通过Socket.IO库连接服务器,发送消息并监听广播。此方法支持多种实时通信协议,适应不同环境,提供流畅的实时体验。
85 3