今天在论坛中看到有人在讨论关于票据打印的问题
 在DOS年代,我们是直接用控制打印机对象的方法进行单字打印。
 在现在图形界面开发的程序中,仍有很多人在使用这种方法。
 当然这种方法的好处是显而易见的,打印位置准确,容易控制走纸,
 而且比其他的打印方式相对能延长打印机寿命,节约打印成本。
使用printer对象控制打印的唯一问题是开发时调整位置需要相当长的时间。
在现在的很多项目中,我们使用的是可视化的编程工具,相应的打印方法又增加了很多。
 有人采用的是使用Excel模板的方法,将输入写入到Excel模板来控制打印。
 这个方法固然有好处,但是其问题是在打印时需要启动一个Excel应用。
 在进行大量快速打印的时候,这个问题就更为突出。
现在我们来切入正题,票据类的套打一般就是打印细目,金额等信息
 打印前可能需要进行预览,然后进行打印,打印时不需要打印发票上已经有的内容
 如文字,边线。
 部分单位可能需要在打印内容的基础上需要打印一个公章类的印记。
在实际的操作中,我们用扫描仪扫描该发票,
 使用图形处理工具处理成灰度,注意扫描的时候可能会导致大小有些变形,需要调整大小。
 然后打印出来与实际票据对比,直到大小一致。
 这个过程很快的,大概只要几分钟的时间,如果开发时使用15寸显示器(1024*768),
 那么票据大小与屏幕上显示的比例基本就是1:1
 如果是17寸显示器(1024*768),屏幕上的显示就比实际打印出来的大。
在开发时,选定一个Form,将Form的底色设置成白色,把处理好后的图设置为底图。
 将Form调整为与图片一样大小。
 然后将Label控件拖到对应的位置(或者用),在程序中只要更改这些Label的值就可以了。
 这样根本就不用在去在界面上画线,还要一遍一遍地去对应位置,基本是一次成功
 设置完毕后就可以直接打印,打印前将Form的底图取消掉即可。
这样的好处是在打印前可以直接预览而不用再进行特别处理。
代码大致如下:
'---------------------------------
 
'假设我们打印2004年9月的固话帐单
 '基本信息
 lblYear.caption="2004"
 lblMonth.caption="09"
 lblUserName.caption="Babyt(阿泰)"
 lblUserID.caption="12345678"
 '话费条目
 lblItem(0).caption="市话月租费"?'项目
 lblTimes(0).caption=""???'次数
 lblFee(0).caption="25.00元"??'费用
 lblItem(1).caption="区间通话费"?'项目
 lblTimes(1).caption="800次"???'次数
 lblFee(1).caption="80.00元"??'费用.....
lblMoneyCN.caption="壹佰贰拾元整"
 lblMoneyEN.caption="¥120.00"
 '设置完毕
 '---------------------------------
'界面上不要出现按钮之类的
 'Form上增加KeyDown事件,如果按下回车键,进行提示打印
 '如果确定打印,使用以下语句取消掉背景图片
 frm.Picture=LoadPicture("")
 '然后进行窗体打印即可
 Me.PrintForm 
在后面的文章中,我将讲解如何进行走纸张控制和条形码打印的一些注意事项
 
 
                     
            
        













 
                    

 
                 
                    