Майкл Свит (Michael R Sweet), автор системы печати CUPS, представил выпуск PAPPL 1.3, фреймворка для разработки приложений для печати на базе протокола IPP Everywhere, которые рекомендуется использовать вместо традиционных драйверов для принтеров. Код фреймворка написан на языке Си и распространяется под лицензией Apache 2.0 с исключением, разрешающим связывание с кодом под лицензиями GPLv2 и LGPLv2.
Фреймворк PAPPL был изначально разработан для поддержки системы печати LPrint и драйверов Gutenprint, но может быть использован для реализации поддержки любых принтеров и драйверов при выводе на печать на настольных, серверных и встраиваемых системах. Предполагается, что PAPPL сможет способствовать ускорению продвижения технологии IPP Everywhere вместо классических драйверов и упрощению поддержки других программ на основе IPP, таких как AirPrint и Mopria.
PAPPL включает встроенную реализацию протокола IPP Everywhere, предоставляющего средства для доступа к принтерам локально или по сети и обработки запросов по выводу на печать. IPP Everywhere работает в бездрайверном режиме (“driverless”) и в отличие от драйверов PPD не требует создания статических файлов конфигурации. Поддерживается взаимодействие с принтерами как напрямую через локальное подключение принтера по USB, так и обращение по сети при помощи протоколов AppSocket и JetDirect. Данные могут отправляться на принтер в форматах JPEG, PNG, PWG Raster, Apple Raster и “raw”.
PAPPL может быть собран для POSIX-совместимых ОС, включая Linux, macOS, QNX и VxWorks. Из зависимостей отмечается Avahi (для поддержки mDNS/DNS-SD), CUPS, GNU TLS, JPEGLIB, LIBPNG, LIBPAM (для аутентификации) и ZLIB. На базе PAPPL проектом OpenPrinting развивается универсальное приложение PostScript Printer Application, способное работать как с современными IPP-совместимыми принтерами (используется PAPPL), поддерживающими PostScript и Ghostscript, так и со старыми принтерами, для которых имеются драйверы PPD (применяются фильтры cups-filters и libppd).
Среди изменений в новой версии:
- Добавлена возможность удержания и возобновления выполнения работ по выводу на печать.
- Добавлено ведение отладочного лога для операций управления устройствами.
- Добавлена поддержка масштабирования PNG-изображений, используя встроенную информацию о разрешении.
- Предоставлена возможность вывода локализированного баннера в верхней части web-страниц со сведениями о принтере и системе.
- Добавлен API для управления запуском периодически выполняемых задач.
- Реализована возможность настройки сети через callback-вызовы.
- Добавлен API для ограничения максимального размера изображений JPEG и PNG.
- Добавлена поддержка сборки в Clang/GCC в режиме ThreadSanitizer (-enable-tsanitizer).
- В поле для ввода пароля для Wi-Fi добавлена кнопка для отображения пароля.