Я поддерживаю приложение 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 теперь предоставляет «Универсальный драйвер печати», который нам сказали использовать. Наш специалист по поддержке ПК смог временно заставить печать чеков работать, переустановив старый драйвер печати, который мы использовали в Windows XP, но как только принтер выключается и снова включается, он сбрасывается на новый универсальный драйвер.
Я попытался использовать PrintDefineFont
и PrintSetFont
, чтобы установить шрифт Courier Regular 8pt (это то, что нам нужно от службы технической поддержки Source Technologies), но это не помогло:
PrintDefineFont(il_job, 1, "Courier", -8, 400, Fixed!, AnyFont!, FALSE, FALSE)
PrintSetFont(il_job, 1)
Может ли кто-нибудь помочь мне с этой проблемой? Или предложите, где мне могут помочь.
Спасибо.