Michael R Sweet, the author of the CUPS printing system, has introduced the release of PAPPL 1.2, a framework for developing printing applications based on the IPP Everywhere protocol, which is recommended for use instead of traditional printer drivers. The framework's code is written in C and is distributed under the Apache 2.0 license with an exception allowing linking with code under GPLv2 and LGPLv2 licenses.
Among the changes in the new version:
- Full localization support has been added. Basic localization sets have been offered for English, French, German, Italian, Japanese, and Spanish languages.
- Improved support for the macOS platform. Integration with the macOS global menu has been provided. Added the ability to run print output applications in mode server.
- Support for interpolation when printing JPEG images or using the papplJobFilterImage function with anti-aliasing enabled has been added.
- Additional features of the IPP (Internet Printing Protocol) have been implemented, and new APIs have been added: papplDeviceGetSupplies for determining ink and toner levels, papplSystemAddEvent/papplSubscriptionXxx for handling IPP notifications, papplSystemGet/SetMaxClients for limiting the number of clients. Support for the IPP attribute 'printer-is-accepting-jobs' has been added in the papplPrinterDisable and papplPrinterEnable functions.
- The ability to specify custom paper sizes in millimeters has been added.
- Support for OpenSSL and LibreSSL libraries has been added.
- The USB Gadget code used for creating client USB devices and software simulation of USB devices has been updated.
- User binding for the default print spool directory has been ensured.
- Compatibility with the libcups3 library has been improved.
The PAPPL framework was originally developed to support the LPrint printing system and Gutenprint drivers, but can be used to implement support for any printers and drivers when printing on desktop, server, and embedded systems. PAPPL is expected to help accelerate the adoption of IPP Everywhere technology instead of classic drivers and simplify support for other IPP-based applications, such as AirPrint and Mopria.
PAPPL includes a built-in implementation of the IPP Everywhere protocol, providing means to access printers locally or over a network and handle print requests. IPP Everywhere operates in a driverless mode and, unlike PPD drivers, does not require static configuration files to be created. It supports interaction with printers both directly via local USB printer connections and over the network using AppSocket and JetDirect protocols. Data can be sent to the printer in JPEG, PNG, PWG Raster, Apple Raster, and raw formats.
PAPPL can be built for POSIX-compatible operating systems, including Linux, macOS, QNX, and VxWorks. Dependencies include Avahi (for mDNS/DNS-SD support), CUPS, GNU TLS, JPEGLIB, LIBPNG, LIBPAM (for authentication), and ZLIB. Based on PAPPL, the OpenPrinting project develops a universal PostScript Printer Application that can work with both modern IPP-compatible printers (which use PAPPL) that support PostScript and Ghostscript, as well as older printers that have PPD drivers (using cups-filters and libppd).
Source: opennet.ru
