我维护一个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中,打印机无法识别命令字符串,实际上只是在支票库上打印命令。如果执行相同的“打印到文件”,则可以在其中看到命令,但命令字符串中的每个字符都由其他字符分隔。
以下是从“打印到”文件中获取的示例,您可以通过查看星号(*)前面的每个字符来查看字符串'&%SMCPFFFF$'
。
*p171Y&*p50X%*p100XS*p150XM*p200XC*p250XP*p300XF*p350XF*p400XF*p450XF*p500X$
这似乎是一个打印驱动程序问题,事实上,Source Technologies现在提供了一个我们被告知使用的“通用打印驱动程序”。我们的PC支持人员能够通过重新安装我们在Windows XP上使用的旧打印驱动程序暂时使支票打印工作,但是一旦打印机关闭再打开,它就会重置为新的通用驱动程序。
我尝试使用PrintDefineFont
和PrintSetFont
,将字体设置为Courier Regular 8pt(这是Source Technologies的技术支持人员告诉我们我们需要的),但这没有帮助:
PrintDefineFont(il_job, 1, "Courier", -8, 400, Fixed!, AnyFont!, FALSE, FALSE)
PrintSetFont(il_job, 1)
任何人都可以帮我解决这个问题吗?或者建议我可以在哪里获得帮助 谢谢。
答案 0 :(得分:0)
试试这个:添加一台新打印机。选择打印机连接的端口。选择制造商:Generic,Printer:Generic / Text only。当您打印到此打印机时,它应该准确地将Print
语句中的内容发送到打印机。
答案 1 :(得分:0)
谢谢Hugh,我尝试了你的建议听起来不错,但不幸的是它没有效果
事实上,截至昨天我确实解决了最后一个打印问题。我必须单独处理每种特殊字体(微线,签名,检查金额等),并使用PrintDefineFont / PrintSetFont,嵌入式打印机命令字符串重置字体,以及将数据窗口中的列控件更改为一个文本控件(一个打印机命令字符串被移动到这个字段和数据中,一个工作,另一个没有)。
感谢您的帮助。
莱斯
答案 2 :(得分:0)
请右键单击您的软件,然后进入兼容模式,然后在其中选择“ Windows XP SP3”,单击“应用”,然后单击“确定”。
确认软件现在是否可以完美发送打印命令?