Печать с использованием 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).
Хотя программное обеспечение в настоящее время все еще находится в бета-версии, оно уже очень функционально. Он поставляется с двумя основными инструментами командной строки:
ippserver
, Запустите его (с соответствующими опциями), и в вашей сети будет полноценный экземпляр сервера IPP, который будет служить виртуальным принтером IPP (или сервером IPP, на котором размещено несколько виртуальных очередей IPP), который вы можете использовать для тестирования любой (или себя). написано) IPP клиентское программное обеспечение против.ipptool
, Это клиентская программа IPP, которая может отправлять любую комбинацию запросов IPP любому экземпляру IPP в сети (сервер CUPS,ippserver
, IPP-совместимое оборудование принтера) и проверить его ответы. Программное обеспечение поставляется с несколькими подготовленными текстовыми файлами, содержащими примеры запросов IPP, все с.test
суффикс для их имен файлов.
Для вашей цели вы можете запустить эти команды:
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
,ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-1.1.test
, Эта команда запустит полный набор средств проверки на принтере, чтобы проверить его соответствие реальному IPP-1.1.ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test
, Эта команда запустит полный набор средств проверки на принтере, чтобы проверить его реальную совместимость с IPP-2.0.ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test
, Эта команда запустит полный набор средств проверки на принтере, чтобы проверить его реальную совместимость с IPP-2.0.ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.1.test
, Эта команда запустит полный набор средств проверки на принтере, чтобы проверить его соответствие реальному IPP-2.2.ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.2.test
, Эта команда запустит полный набор средств проверки на принтере, чтобы проверить его соответствие реальному IPP-2.2.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. Смотрите далее вниз для примеров.
Скачать:
wget https://github.com/KurtPfeifle/ippsample/releases/download/continuous/ippsample-x86_64.AppImage
Сделайте AppImage исполняемым (и при необходимости переименуйте его в
ippsample
):chmod a+x ippsample-x86_64.AppImage mv ippsample-x86_64.AppImage ippsample
Взгляните на встроенный экран справки:
./ippsample --ai-usage
Запустить его:
./ippsample ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test
Найдите все принтеры с поддержкой 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
Выберите один принтер, распечатайте работу:
./ippsample ipptool \ -tv \ -f ./printjob.pdf \ ipp://HPA0B3CCF051B9.local:631/ipp/printer \ print-job.test
ASCIinema ASCIIcast
Вот (более старый) ASCIinema-бросок ASCIinema, служащий иллюстрацией того, о чем я писал и как использовать Образец программного обеспечения IPP (и его AppImage):