Как: имитировать (IPP) принтер

Я хотел бы протестировать некоторые функции, которыми должен обладать IPP (а именно: отслеживать количество созданных показов; см. Этот вопрос), но у меня пока нет аппаратного обеспечения. Как я могу смоделировать такой принтер? Есть ли код для фиктивного принтера IPP?

Я буду работать в Linux или Windows.

2 ответа

Полноценным симулятором принтера с открытым исходным кодом, совместимым с IPP-2.2 и IPP Everywhere, является образец программного обеспечения IPP на Github. Он предоставляется Рабочей группой по принтерам (PWG), органом, который стандартизировал IPP (Internet Printing Protocol).

Пример программного обеспечения IPP может быть скомпилирован на любой основной платформе: Linux, Windows, macOS.

Программное обеспечение в настоящее время все еще находится в бета-версии, но уже очень функционально. Один из инструментов командной строки это ippserver, Это симулятор принтера, который вы ищете. Он гораздо мощнее, чем Apple Simulator Printer Simulator, но у него нет графического интерфейса. Вы должны быть знакомы с запущенными инструментами командной строки.

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

IPP Sample отправляет второй важный инструмент, ipptool, Это может служить клиентом IPP. Вы можете играть с обоими, чтобы проверить друг друга. Посмотрите, как это работает в этом ASCII-броске:

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

Если вы хотите попробовать это сами и работаете в Linux, вам даже не нужно создавать его самостоятельно. Просто используйте мой прочитанный 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
    

    (Это позволит запустить набор тестов для проверки полного соответствия IPP-2.0 принтера IPP на IP-адресе xxx.xxx.xxx.xxx.)

Больше тестовых примеров:

  1. Распечатать работу:
    ./ippsample ipptool -t -v \ -f my.pdf \ ipp://xxx.xxx.xxx.xxx/ipp/print \ print-job.test (Это приведет к печати, отправьте my.pdf как задание на печать на принтер.)

  2. Проверить принтер print-uri служба поддержки:
    ./ippsample ipptool -t -v \ -o document-uri=https://ftp.pwg.org/pub/pwg/candidates/cs-ippeve10-20130128-5100.14.pdf \ ipp://xxx.xxx.xxx.xxx/ipp/print \ print-uri.test

    (Это скажет принтеру, чтобы он выбрал названный PDF из document-uri и распечатал его.)

Очень хорошим симулятором IPP является Apples Printer Simulator. Ищите Аппаратные Инструменты IO в https://developer.apple.com/download/more/ (см. Этот вопрос)

Несмотря на то, что он доступен только для OS X, вы все равно можете протестировать в Linux или Windows эту сетевую службу. Печатные страницы могут отображаться в окне предварительного просмотра для просмотра. Симулятор также поддерживает обязательный атрибут IPP job-impressions-completed, Инструмент экономит много бумаги.

CUPS не хороший симулятор. Для правильной работы необходим настоящий принтер, на который он может печатать. Вы можете приостановить очередь и проверить печать на ней. Вы не получите impressions-completed > 0 если вы не отпустите очередь. Это приведет к реальной, не имитированной печати.

CUPS предоставляет интерфейс IPP для принтеров. Используя Java и jspi ( как уже упоминалось в этом вопросе; он немного устарел и требует некоторого исправления, например, для учета синтаксиса разрешения для атрибутов), вы можете иметь следующий код для доступа к локальному принтеру в качестве принтера IPP:

IppPrintService service = new IppPrintService(URI.create("ipp://localhost:631/printers/HL2240D-local"));

Также доступен CUPS4J, который, я думаю, делает то же самое, но через свои собственные интерфейсы, а не через javax.print,

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