Code Monkey home page Code Monkey logo

libppd's Introduction

OpenPrinting libppd v2.0.0 - 2023-09-22

Looking for compile instructions? Read the file "INSTALL" instead...

INTRODUCTION

CUPS is a standards-based, open-source printing system used by Apple's Mac OS® and other UNIX®-like operating systems, especially also Linux. CUPS uses the Internet Printing Protocol ("IPP") and provides System V and Berkeley command-line interfaces, a web interface, and a C API to manage printers and print jobs.

CUPS 1.0 was released in early 2000 and since then and until CUPS 2.x PPD (PostScript Printer Description) files were used to describe the properties, features and user-settable options of printers. The development of PPD files (and also PostScript) was stopped by Adobe back in 1984, and Michael Sweet, author of CUPS, deprecated PPD files already ~10 years ago, seeking for a more modern alternative.

Introducing the concept of Printer Applications (emulations of driverless IPP printers, provides printer properties on get-printer-attributes IPP request) on the OpenPrinting Summit/PWG Meeting in May 2018, the replacement is there and PPD file support is going away in CUPS 3.x, to be released end-2023. This also means that libcups3 will not contain any PPD-file-supporting functions any more.

Currently, ~10000 printer models are supported with PPD-file-based classic CUPS drivers. Many drivers are even coming from the pre-CUPS era and got retro-fitted with Foomatic and its PPD file generator.

And these drivers are a huge code base and most of these old printers are not easily accessible for testing, converting these drivers into native Printer Applications by rewriting their code would be an unbearable and error-prone burden. Therefore a minimum-invasive retro-fitting method is needed, which simply encapsulates the drivers and PPD files as they are and therefore we still need to be able to handle PPD files (and also *.drv PPD generator files).

To avoid re-writing support for an obsolete format from scratch, only for retro-fitting legacy printer drivers we have created this package, libppd, the legacy support library for PPD files, which is by 95 % code overtaken from CUPS 2.x:

  • All PPD file support functions of libcups (see ppd/ppd.h)
  • All functions and utilities of CUPS' PPD compiler (see ppd/ppdc.h. code taken from the ppdc/ directory of CUPS 2.x source code)
  • Most functions of cups-driverd of CUPS 2.x (see ppd/ppd.h, for handling collections of PPD files in a driver package/Printer Application).
  • Some new code got added for PPD file support in filter functions (of licupsfilters) and wrapping filter functions into filter executables for CUPS 2.x (see ppd/ppd-filter.h).

Currently, libppd is made use of for the following applications:

  • Legacy filter executables for CUPS 2.x, the cups-filters package (version 2.x or newer). It allows updating to cups-filters/libcupsfilters 2.x while still using CUPS 2.x.
  • CUPS-driver-retro-fitting Printer Applications based on PAPPL and pappl-retrofit. The currently 4 retro-fitting Printer Applications in the Snap Store contain all the drivers which are available as Debian package, for the above-mentioned ~10000 printer models!
  • cups-browsed. Unfortunately, there are still many print dialogs around which do not support printers for which CUPS auto-generates a temporary print queue. Therefore cups-browsed still has to create permanent print queues for PPD-supporting CUPS 2.x and for this deal with PPD files. Conversion to a Printer Application without any PPD file handling is planned.

NOTE: LIBPPD IS ONLY FOR LEGACY PPD FILE SUPPORT! IT SHOULD NOT BE A MOTIVATION TO CREATE NEW PPD FILES OR NEW PPD EXTENSIONS!

As libppd is only for legacy PPD file support we do not plan to add any new features to it. Bug fixes will happen whenever needed though.

For compiling and using this package libcups of CUPS 2.2.2 or newer and libcupsfilters, version 2.0.0 or newer is needed. Of libcups no PPD-supporting functions are used, so porting libppd to use libcups3 should be rather easy (or it already works, not tested yet). Report bugs to

https://github.com/OpenPrinting/libppd/issues

See the "COPYING", "LICENCE", and "NOTICE" files for legal information. The license is the same as for CUPS, for a maximum of compatibility.

LINKS

Classic CUPS

The New Architecture of Printing and Scanning

Printer Applications

libppd's People

Contributors

tillkamppeter avatar smilingthax avatar zdohnal avatar vikrantmalik051 avatar sthibaul avatar jpopelka avatar pranjanpr avatar metabiswadeep avatar sahilarora535 avatar twaugh avatar jailuthra1 avatar deepak0405 avatar kappuccino111 avatar tanmayanand44 avatar casantos avatar jhcloos avatar jsimon383 avatar surajkulriya avatar rishabharya avatar pranshukharkwal avatar nielsenb-jf avatar nidhijainpnp avatar tinytrebuchet avatar stefanbruens avatar thakan25 avatar omihara avatar ffontaine avatar dheeraj135 avatar khatri-deepak avatar dcantrell avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.