Как отправить текстовый файл на принтер
Как я прочитал в некотором руководстве по отпечаткам пальцев, мы можем отправить текстовый файл на принтер. Означает, что мы можем написать программу в текстовом редакторе и отправить всю программу в виде текстового файла на принтер, используя программу связи, используя некоторые команды передачи. на моем хосте есть файл myfile.txt в D:/ со следующими данными
10 PRPOS 200,200
20 DIR 3
30 ALIGN 5
40 PRIMAGE “GLOBE.1”
50 PRINTFEED
RUN
Как я могу отправить этот файл на принтер и выполнить инструкции для печати изображения. Пожалуйста, дайте мне ссылку на код.
3 ответа
Есть несколько способов сделать это из командной строки. Например:
type foo.txt > lpt1:
Или же
copy foo.txt lpt1:
Или же
print foo.txt
Или же
notepad /p foo.txt
Если вам нужно сделать это программно, вы можете выполнить любую из этих команд, используя функцию system() или CreateProcess().
Если вы подключены к контроллеру Intermec и подключены к принтеру Bluetooth, вы сможете открыть последовательный порт для COM6 и отправить файл поверх. Какой язык программирования? Там должно быть много примеров кода связи последовательного порта там.
Мой опыт работы с принтером этикеток Intermec PM4i был американскими горками, но я знаю, что у меня есть работающее приложение.
Я попробовал конвейер принтера Windows через драйвер универсального текста. Это работает из Блокнота, но с несколькими угловыми случаями.
Печать напрямую из Блокнота работает нормально, пока я не попробую 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-пейзаж, и он принимал более длинный текст, но все еще не хватало для всех случаев использования.
Все принтеры имеют максимальную физическую ширину печати, но это не должно учитываться в файлах сценариев отпечатков пальцев /directprotocol. В конце концов, мы не печатаем этот текст как есть, а отправляем команды на принтер.
Мое решение состояло в том, чтобы создать приложение Java, которое открывает необработанный сокет TCP по адресу 11.22.33.44:9100 и записывает текстовые строки, строки, оканчивающиеся на NL(#10). Работает отлично. Другим вспомогательным инструментом, который я сделал, был Delphi app.exe для чтения IP-адреса с объекта принтера Windows. Я могу отправить распечатки этикеток "напрямую" из приложения Excel.
- Конечные пользователи редактируют строки данных Excel и нажимают кнопку PRINT LABELS
- Макрос vba анализирует файл шаблона отпечатка пальца с ${FIELD1} заменами поиска и замены
- файл записывается в папку%wintemp%/intermec_script.txt
- вызовите app.exe, чтобы прочитать IP-адрес выбранного пользователем принтера
- вызовите приложение java для отправки intermec_script.txt в IP: сокет PORT
Я должен создать такое же приложение отправки сокетов в Delphi, чтобы удалить зависимость javavm, но это решение было быстрее для моего случая использования. Я более знаком с Java, чем мой уровень навыков Delphi.