基于信封套打以及批量打印的实现过程

最近须要向客户发送一些宣传资料,Excel列表里面有一两百个记录,原本想手写就算了,估摸着也花不了多少时间,不过写完一个信封我就后悔了,成天敲着键盘,书写的字太难看了,并且感受手仍是有点累。才第一个啊,想着后面还有那么多,感受整我的头都大了,只好放弃,太没技术含量了。而后寻找有无一些套打的的软件,不过找来找去仍是没有满意的,仍是本身写一个套打的软件好了,这个小小的仍是有点技术含量,呵呵。本篇随笔基于这个困惑,整理了一个信封套打以及批量打印的实现过程,软件能够实现自动批量的信封套打,一两百个的信封地址,也是一阵子的功夫就打印完成了,感受小有成就,并且之后就基于这个模式来批量打印信封,方便了不少。html

一、信封套打的实现思路

基于套打的处理,我在几年前的随笔都有一些随笔介绍,如《Web打印的解决方案之证件套打》、《基于MVC4+EasyUI的Web开发框架经验总结(16)--使用云打印控件C-Lodop打印页面或套打报关运单信息》这两篇随笔基本思路仍是采用打印控件C-Lodop(http://www.lodop.net/)来进行打印的,我这样的套打小程序,最好仍是作成Winform程序比较方便,所以在Winform里面整合网页浏览就能够实现这个控件的打印处理了。小程序

另外,咱们根据打印的地址信息,动态的生成HTML内容便可,基于这样的理念,咱们动态生成HTML能够考虑使用NVelocity的模板化处理技术,这个能够参考下个人随笔《使用NVelocity生成内容的几种方式》进行了解,这个NVelocity用来处理模板化的内容生成仍是很是方便的。数组

前面介绍的这些内容,其实就是基于C-Lodop 和 NVelocity进行一个信封批量套打的处理实现技术。框架

这些技术都是以前研究实现过的东西,用起来应该得心应手了,也就不枉费精力去找其余信封套打软件了。函数

咱们先来介绍一下总体的打印效果,首先咱们要有一些特制的信封或者普通讯封,这样才能基于这个基础上进行套打,把邮政编码、地址和联系人等信息打印上去。post

而后你须要有一个打印设备,我这里采用了一个佳能的喷墨打印机(固然其余的也没问题)。测试

最后就是基于软件的基础上进行套打了,软件能够单个打印,也能够导入Excel进行套打才能够解决实际问题。编码

通常是在单个打印没问题后,进行批量打印,能够省却大量的时间,下面是基于这个套打软件打印的信封,若是手写的话,不知道写到何年何月了。url

 

  

二、信封套打的实现过程

下面咱们来介绍这个信封套打的实现过程。.net

首先咱们先作一个测试页面,启动C-Lodop的设计界面,咱们往里面添加一些信封所须要的元素,如套打的背景图片、邮政编码的文本、地址文本、人名称呼等信息后,大体调整到合适的位置即完成了相关的设计,界面设计效果以下所示。

而后咱们经过获取设计样式下的代码

生成代码里面就能够看到具体的内容了。

有了这些信息,咱们就能够建立一个HTML模板,而后利用NVelocity来动态生成相关的变量信息便可,HTML模板文件中的逻辑代码(JS代码)以下所示。

接着在咱们模板文件中的打印预览函数编写以下所示。

这样就能够实现标准格式的浏览了,文本显示位置不必定和背景彻底吻合,背景只是做为参考处理而已。

 

完成这些就基本上是大功告成了,可是咱们打印的时候,咱们须要注意在打印设置中采用的纸张,若是采用A4的卡纸宽度和自定义的卡纸宽度的设置是不一样的,咱们建议根据信封的尺寸自定义格式设置,卡纸的位置就和信封宽度一致便可,防止信封进纸的时候晃动致使位置发生误差。下面的是我对打印信封的用户自定义设置对话框,采用实际的尺寸(毫米)进行设置便可。

前面介绍的是当个信封打印预览而后进行打印,打印的按钮事件处理代码以下所示。

传入相关的键值参数后,能够实现相关的数据绑定,而后打开HTML后,就能够执行相关的脚本进行信封打印了。

 

而对于批量打印,处理方式和单个打印有所差别,就是不会每一个都介入预览操做,咱们是须要把一批对象进行打印。

那么咱们若是要实现批量的数据打印,就须要利用JS里面的数组操做,把对应的对象放到里面,而后批量进行打印就能够了。

而这个数据的生成,咱们就是利用NVelocity的模板函数进行处理便可。

完成这些,咱们就能够传入对应的打印集合,让其在NVelocity模板里面生成对应的HTML代码,生成对应的对象加入到打印的数组里面,从而完成批量的数据打印了。 

批量套打是在咱们确认单个打印格式吻合已有信封的位置状况下,进行批量的打印处理。

一旦开启批量打印,咱们的剩下的工做就是不断的往打印机上面放置足够的信封便可,能够边喝茶边等待完成,怡然自得的了。

以上就是基于NVelocity+C-LODOP控件实现的信封套打整个思路和实现方式,对于咱们技术人来讲,作一个这样的软件所花费的时间,比手写几百个信封浪费的时间更有意义,所得到的成就感也是有那么一些的。

总之,技术就是为生活服务。

相关文章
相关标签/搜索