ReportMachine打印条形码的问题

  最近用RM报表来打印条形码,调试过程非常顺利,扫描枪识别也很正常,唯独斑马打印机的走纸不准确是个问题,正好客户不想用这种纸型,并定制了新纸型,心想等新纸型到后再调试报表的走纸问题不迟。
  几天后,新纸型到,于是在新纸型下进行调试,却发现新纸型的走纸非常正确,一想便明白是传感器的问题,原来的纸型宽,不适用这种斑马打印机,现在好了,走纸问题没有了,可以交付程序了。一个同事说别扫描枪不识别,我心里不以为然,另外一个同事顺手把打出来的条码往扫描枪一靠,我靠,还真没识别出来,又连续打了好几张,都不能识别,这下晕了。换原来的宽纸打印,能识别了。但是客户订的是窄纸型且窄纸无走纸不准确问题,只能用窄纸打印,便琢磨着问题出在哪儿,打印驱动、扫描枪、电脑都换了一遍,还是不行。细心的客户比较了一下两种纸,发现窄纸质量不如宽纸好,但是这也不能解决问题。再仔细看看,总感觉RM打印的条码不是很锐利,感觉模模糊糊的,尤其是细线几乎就没打印出来,放大一看,原本应该是直线的,但是实际上是圆角直线,觉得这就是问题所在。那就换控件吧,从网上找了N多条码控件,并研究了几种条形码的绘制方法与验证码的生成,但是不能嵌入到RM中,就没法用。

  已经夜里十二点了,突然想起RM的条形码也是抄别人的代码,如果找到该代码的升级版,也许可以解决问题,说找就找,经过一番搜索并对比,还真找到了原版代码,再仔细一看,靠,居然版本比RM用的还低,没招,还是研究一下RM的代码,看看能否找出问题所在,仔细看了RM的RM_AsBarCode单元,觉得没有什么问题,无意中发现了还有个RM_AsBarView单元,打开一看,原来RM是在这里通过调用RM_AsBarCode的DrawBarCode方法来绘制自己的画布的,估计应该是这里出问题了,经过研究,RM是采用了TMetafile类来进行绘制并放大的,这个类的好处是放大的失真度比较小,对于处理文字和图形应该是比较好的方案,但是处理条形码估计就不行了,于是换成TBitmap进行绘制,打印出来的条码放大后锯齿状明显,在正常情况下却是非常锐利的,心想这下问题应该解决了。连接打印机,一下打了十几张条形码,十几张条码扫描都非常顺利。

  问题解决,近深夜2点,睡觉。

转载于:https://www.cnblogs.com/cxg417/archive/2009/12/18/1627504.html

1、支持屏幕打印,控制方法多样,可以打印全部rxlib控件全部InfoPower控件,TDBGrid,TStringGrid,TImage,TEdit等,TDBGridEh,f1book,TDecisionGrid等等众多控件。(例子1,例子2,例子3,例子4,例子5)   2、支持最终用户设计、修改报表,只需连接相关的数据源,指出数据的位置(设置报表样式),无论是主从表,子报表,套表,都可迅速生成。开发一个报表只需几分钟的时间。   3、报表样式可以保存为rmf格式,下次可通过读入使用(配合SQL脚本就可以生成报表)。并可以把带数据的报表保存为rmp格式,在任何机器上都可以浏览、打印,而不需要数据库。   4、生成后的报表支持修改,包括字体的设置,边框的设置,修改内容等。   5、报表编辑器内自带ado,bde,ibx,Diamond dao,dbisam等数据访问控件,可以通过这些控件开发独立的报表制作工具。其使用方法和delphi中的控件是一样的。   6、完全、自由自定义页面、边距、字体,标题和页眉页脚,并可以在自认合适的地方插入函数来实现当前日期,页合计,总合计等功能,合计字段可以放在页头,分组头,并支持条件合计,对分组合计,分页合计,总计等只需简单地设置属性即可。   7、完全支持D5--D7,BCB5--BCB6。   8、报表中可以在自认合适的事件(on beforeprint,on afterprint等)中加入程序脚本,以控制、或实现更复杂的打印效果。   9、更新迅速,可根据使用人员与用户的意见,不断的加入新的功能。   10、多种格式转换,可以把做出的报表转换为html,xls,pdf,bmp,jpeg等等格式。   11、自动对超长记录折行,超长的内容也会自动折行,中文换行不会乱码。   12、首家支持缩放打印功能,可以根据打印时选择的纸张自动缩放报表。   13、首家支持即打即停.   14、首家提供类似excel的报表设计器,给你足够灵活方表的报表设计方式。   15、首家提供双报表设计器(第一种,第二种),满足所有的需求。   16、更是提供类似于ObjectPascal的script,实现特殊功能。   17、首家提供web,IntraWeb中的报表解决方案。   18、首家提供报表压缩处理,占用内存更少,生成报表速度更快。   19、首家提供合并单元格功能,更加适应处理复杂的中文报表。   20、自动填空行,每页打印数量等细节处理更完善。
20190427 功能:[修正版]修改ReportBuilder支持QRCode二维码 注: 1、DelphiZXIngQRCode.pas 为用到的二维码生成源码,来源https://github.com/foxitsoftware/DelphiZXingQRCode,版权由原作者所有 2、rbRCL106.bpl 为已经重新编译好的含可以生成QRCode二维码的bpl文件,也是目标文件 3、old文件夹里是旧源码备份 4、new文件夹里的pas文件为修改后的源码文件 实现步骤: 1、 需要修改RB源码文件,new文件夹里的pas文件为已经修改好的了,只要放到rb的source目录下替换掉旧文件则可: ppBarCode2DDrawCmd.pas ppSt2DBarC.pas ppTypes.pas 2、把DelphiZXIngQRCode.pas文件同时拷贝到rb的source目录下 3、使用delphi打开rb的source目录下的rbRCL106.dpk项目,然后编译,输出的rbRCL106.bpl文件为目标文件(一般输出到这个目录下Delphi6\Projects\Bpl) 4、把rbRCL106.bpl文件替换掉原安装rb时的同名文件则可,一般该文件放在windows\system32下,如果是发布给客户用的话,直接把该文件给客户则可 附: a、支持中文,具体可以在TppStMaxiCodeBarcode.GenerateBarcodeBitmap_QRCode这里设置QRCode.Encoding来支持具体的字符集。 QQ扫码支持中文,但微信目前却不支持。 b、现在二维码的大小是固定,信息容量不大,如果信息量过大就不好识别,61*61的话在100个字以内,89*89的话在250个字以内,129的话在500个字以内, 可以在TppStMaxiCodeBarcode.Create设置长宽实现。参考《QRCode_编码解码标准.pdf》第13页表格对照。 James 20190427 QQ:825818689
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值