我维护了一个PowerBuilder Classic 12.5应用程序,它具有在Source Technologies MICR打印机上打印支票的功能。该应用程序在Windows XP环境中运行良好。我们正在尝试迁移到Windows-7操作系统,但支票打印不再起作用。
这是问题所在。PowerBuilder发出PrintOpen,后跟几个Print命令,将命令字符串发送到打印机以解锁MICR模式和各种安全字体:
il_job = PrintOpen( )
Print(il_job,'&%STF[password]$')
Print(il_job,'&%SMCPFFFF$')
Print(il_job,'&%STP10003$')
Print(il_job,'&%STP10002$')
Print(il_job,'&%STP10001$')
Print(il_job,'&%1B$&u600D')
Print(il_job,'&%1B$*t600R') 这在XP上运行良好,如果您将打印机重定向到“打印到文件”,您可以在文件中看到命令字符串。
在Windows-7中,打印机无法识别命令字符串,实际上,它只是打印支票库存上的命令。如果您执行相同的"print to file",您可以在其中看到命令,但命令字符串中的每个字符都由其他字符分隔。
下面是取自"print to“文件的示例,您可以通过查看星号(*)前面的每个字符来查看字符串'&%SMCPFFFF$'。
*p171Y&*p50X%*p100XS*p150XM*p200XC*p250XP*p300XF*p350XF*p400XF*p450XF*p500X$ 这似乎是一个打印驱动程序的问题,事实上,Source Technologies现在提供了一个“通用打印驱动程序”,我们已经被告知要使用它。我们的PC支持人员通过重新安装我们在Windows XP上使用的旧打印驱动程序,可以让支票打印暂时正常工作,但一旦关闭并再次打开打印机,它就会重置为新的通用驱动程序。
我尝试使用PrintDefineFont和PrintSetFont,将字体设置为Courier 8pt (这是Source Technologies的技术支持人员告诉我们需要的),但无济于事:
PrintDefineFont(il_job, 1, "Courier", -8, 400, Fixed!, AnyFont!, FALSE, FALSE)
PrintSetFont(il_job, 1) 有人能帮我解决这个问题吗?或者建议我在哪里可以得到帮助。
谢谢。
发布于 2014-05-01 00:14:48
试试这个:添加一个新的打印机。选择打印机连接到的端口。选择制造商:通用,打印机:通用/仅文本。当您打印到此打印机时,它应该准确地将您的Print语句中的内容发送到打印机。
发布于 2014-05-03 01:24:05
谢谢休,我试过你的建议,听起来不错,但不幸的是没有效果。
碰巧的是,到昨天为止,我确实解决了最后的打印问题。我必须处理每种特殊的字体(micr行,签名,支票金额等)使用PrintDefineFont/PrintSetFont、嵌入的打印机命令字符串来重置字体,以及将数据窗口中的列控件更改为文本控件(打印机命令字符串与数据一起移动到此字段中,其中一个有效,另一个无效)。
感谢你的帮助。
Les
发布于 2019-07-24 14:27:38
请右键单击您的软件并进入兼容模式,在其中选择"Windows XP SP3“,然后单击”应用“和”确定“。
确认软件现在是否可以完美地发送打印命令?
https://stackoverflow.com/questions/23160729
复制相似问题