Печать с использованием IPP без драйверов (IPP Client)

У меня есть устройство / устройство, для которого вы не можете установить драйверы. Я хотел бы добавить возможность поддержки сетевых /IPP/AirPrint принтеров, добавив, что пользователь добавляет IP-адреса.

Так как я не печатаю через окна (которые будут использовать IPP), как я могу использовать IPP сам? Существует ли клиент aC# (или любая библиотека windows), который позволяет вам взаимодействовать с принтерами IPP по протоколу IPP?

1 ответ

Решение

Существует несколько реализаций IPP-Client и библиотек IPP, доступных для разных языков программирования (java/php/python).

Практическим решением может быть использование ipptool доступно по адресу http://cups.org/software.php

создать командный файл ipp с именем printfile.ipp:

{
OPERATION Print-Job
GROUP operation-attributes-tag
ATTR charset attributes-charset utf-8
ATTR language attributes-natural-language en
ATTR uri printer-uri $uri
FILE $filename
}

Теперь вы сможете распечатать PDF-файл, используя следующие параметры:

ipptool -tv -f mydoc.pdf ipp://192.168.2.207 printfile.ipp

Убедитесь, что принтер (или сервер печати) поддерживает отправляемый вами формат документа. Я предполагаю, что вы знакомы с тем, как выполнить внешнюю команду в вашем приложении.

(Хотя ipptool обеспечивается CUPS, он прекрасно работает с любым принтером IPP. Проверьте RFC 3510 или документацию к вашим принтерам для соответствующей схемы printer-uri)

Пример программного обеспечения IPP

Между тем Образец программного обеспечения IPP (который включает в себя ipptool упоминалось выше) это отдельный проект на Github. В настоящее время он находится под эгидой Рабочей группы по принтерам (PWG), органа, который стандартизировал IPP (Internet Printing Protocol).

Хотя программное обеспечение в настоящее время все еще находится в бета-версии, оно уже очень функционально. Он поставляется с двумя основными инструментами командной строки:

  1. ippserver, Запустите его (с соответствующими опциями), и в вашей сети будет полноценный экземпляр сервера IPP, который будет служить виртуальным принтером IPP (или сервером IPP, на котором размещено несколько виртуальных очередей IPP), который вы можете использовать для тестирования любой (или себя). написано) IPP клиентское программное обеспечение против.

  2. ipptool, Это клиентская программа IPP, которая может отправлять любую комбинацию запросов IPP любому экземпляру IPP в сети (сервер CUPS, ippserver, IPP-совместимое оборудование принтера) и проверить его ответы. Программное обеспечение поставляется с несколькими подготовленными текстовыми файлами, содержащими примеры запросов IPP, все с .testсуффикс для их имен файлов.

Для вашей цели вы можете запустить эти команды:

  1. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print get-printer-attributes.test, Эта команда запросит у любого принтера IPP его поддерживаемые атрибуты IPP. Это должно включать элемент, рассказывающий о предполагаемой поддержке версий IPP. Например, сообщая как ipp-versions-supported (1setOf keyword) = 1.0,1.1,2.0,

  2. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-1.1.test, Эта команда запустит полный набор средств проверки на принтере, чтобы проверить его соответствие реальному IPP-1.1.

  3. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test, Эта команда запустит полный набор средств проверки на принтере, чтобы проверить его реальную совместимость с IPP-2.0.

  4. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test, Эта команда запустит полный набор средств проверки на принтере, чтобы проверить его реальную совместимость с IPP-2.0.

  5. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.1.test, Эта команда запустит полный набор средств проверки на принтере, чтобы проверить его соответствие реальному IPP-2.2.

  6. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.2.test, Эта команда запустит полный набор средств проверки на принтере, чтобы проверить его соответствие реальному IPP-2.2.

  7. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-everywhere.test, Эта команда запустит полный пакет проверки IPP Everywhere (который является самым последним стандартом IPP) для принтера, чтобы проверить его реальное соответствие IPP Everywhere.


AppImage Образца программного обеспечения IPP

Чтобы облегчить вам этот тип тестирования, я создал готовый исполняемый AppImage из примера программного обеспечения IPP, который должен иметь возможность прямого запуска (не требует "установки"!) На всех дистрибутивах Linux x86_64.

Вы можете использовать его (почти) в любой системе Linux, не устанавливая CUPS или ippsample!

В AppImage встроены все основные исполняемые инструменты командной строки проекта примера программного обеспечения IPP. Эти исполняемые файлы будут работать как " подкоманды" AppImage. Смотрите далее вниз для примеров.

  1. Скачать:

    wget https://github.com/KurtPfeifle/ippsample/releases/download/continuous/ippsample-x86_64.AppImage
    
  2. Сделайте AppImage исполняемым (и при необходимости переименуйте его в ippsample):

    chmod a+x ippsample-x86_64.AppImage
    mv ippsample-x86_64.AppImage ippsample
    
  3. Взгляните на встроенный экран справки:

    ./ippsample --ai-usage
    
  4. Запустить его:

    ./ippsample ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test
    
  5. Найдите все принтеры с поддержкой IPP поблизости:

    ./ippsample ippfind
    

    даст с.т. лайк:

    ipp://HPA0B3CCF051B9.local:631/ipp/printer
    ipp://lenjessie2.local:8444/ipp/print
    ipp://mbp14.papercut-ipv4.local:631/printers/OJ6500
    ipp://mbp14.papercut-ipv4.local:631/printers/libreoffice-pin-code-drucker
    
  6. Выберите один принтер, распечатайте работу:

    ./ippsample ipptool       \
            -tv               \
            -f ./printjob.pdf \
             ipp://HPA0B3CCF051B9.local:631/ipp/printer \
             print-job.test
    

ASCIinema ASCIIcast

Вот (более старый) ASCIinema-бросок ASCIinema, служащий иллюстрацией того, о чем я писал и как использовать Образец программного обеспечения IPP (и его AppImage):

/questions/218367/kak-ya-mogu-uznat-kogdanet-systemdiagnosticsprocess-uspeshno-zapuschen-ili-ne-rabotaet/218382#218382

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