Мой опыт работы с принтером этикеток Intermec PM4i был похож на американские горки, но знаю, что у меня есть работающее приложение.
Я попробовал конвейер принтера Windows через драйвер generictext. Он работает из Блокнота, но с несколькими угловыми случаями.
Печать напрямую из Блокнота работает нормально, пока я не попробовал изображение QRCODE с очень длинной текстовой строкой. Изображение не распечатывалось. Сделал текст qrcode коротким несколькими символами, и тот же скрипт работал нормально.
INPUT OFF
NASC 1252
BF OFF
FT "Swiss 721 Bold BT",12,0,100
PP 50,500:PT "Text line goes here"
PP 400,400:AN 7:BARSET "QRCODE",1,1,7,2,4
PB "ABC123 aabbcc....very long text goes here...I mean about 200 chars or more"
PRINTFEED
Это было похоже на то, как Блокнот обрезал текст до правой границы, а командная строка была сломана. Я сделал настройки печати в альбомном формате A3, и он принимал более длинный текст, но этого было недостаточно для всех случаев использования.
Все принтеры имеют физическую максимальную ширину печати, но ее не следует учитывать в файлах сценариев отпечатков пальцев/прямого протокола. Ведь мы не печатаем этот текст как есть, а отправляем команды на принтер.
Мое решение состояло в том, чтобы создать Java-приложение, которое открывает необработанный TCP-сокет по адресу 11.22.33.44:9100 и записывает текстовые строки, строки, заканчивающиеся NL (# 10). Работает отлично. Еще одним вспомогательным инструментом, который я сделал, был Delphi app.exe для чтения IP-адреса из объекта принтера Windows. Я могу отправлять распечатки этикеток «напрямую» из приложения Excel.
- Конечные пользователи редактируют строки данных Excel и нажимают кнопку ПЕЧАТЬ ЭТИКЕТОК
- Макрос vba анализирует файл шаблона отпечатка пальца с заменой поиска и замены ${FIELD1}
- файл записывается в папку %wintemp%/intermec_script.txt
- вызовите app.exe, чтобы прочитать IP-адрес выбранного пользователем принтера
- вызвать Java-приложение для отправки intermec_script.txt в сокет IP: PORT
Я должен создать такое же приложение отправки сокетов в Delphi, чтобы отказаться от зависимости javavm, но это решение было быстрее для моего варианта использования. Я лучше знаком с Java, чем мой уровень владения Delphi.
person
Whome
schedule
11.11.2014