Как отправить текстовый файл на принтер

Как я прочитал в некотором руководстве по отпечаткам пальцев, мы можем отправить текстовый файл на принтер. Означает, что мы можем написать программу в текстовом редакторе и отправить всю программу в виде текстового файла на принтер, используя программу связи, используя некоторые команды передачи. на моем хосте есть файл 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.

Другие вопросы по тегам