Differences between revisions 37 and 38
Revision 37 as of 2006-04-15 13:41:27
Size: 6152
Editor: ?PascalDeVuyst
Comment:
Revision 38 as of 2006-04-15 13:55:34
Size: 6078
Editor: ?PascalDeVuyst
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
Last update: 04/03/2006 [[BR]]
Contributors: Roger Leigh, Henrique de Moraes Holschuh and Chris Lawrence [[BR]]
Last update: 15/04/2006 [[BR]]
Contributors: Roger Leigh, Henrique de Moraes Holschuh, Chris Lawrence and MartinPitt [[BR]]
Line 59: Line 59:
## * Rationale for linuxprinting.org-gs-builtin versus linuxprinting.org-gs-filters?

Any comments or suggestions to this Specification are welcome!!! ?BR Please openly discuss this on [http://lists.debian.org/debian-printing/ debian-printing mailing list].

PPD File Structure Specification

Created: 05/01/2006 by Pascal De Vuyst ?BR Last update: 15/04/2006 ?BR Contributors: Roger Leigh, Henrique de Moraes Holschuh, Chris Lawrence and ?MartinPitt ?BR Packages affected: cupsys, foomatic-filters-ppds, hplip-ppds, cupsys-driver-gutenprint, linuxprinting.org-ppds and hp-ppd. ?BR When writing this specification the ?PrintingFilesystem Specification has been taken into consideration.

Introduction

There are several packages in Debian that provide Postscript Printer Descriptions (["PPD"]s) for PostScript and non-PostScript printers. These packages should cooperate to form a single database of unique PPDs. This allows GUI tools like the CUPS "Add Printer" web interface and gnome-cups-add to provide users a printer model list for adding printers.

Design

The main idea is to have the following file structure to make it possible for GUI tools to locate PPDs: ?BR common_directory/upstream_reference/manufacturer/filename.ppd

  1. The database of PPDs should be located in a common directory.
  2. To avoid possible filename clashes between different PPD providing packages and to easily seperate PPDs from different sources there should be a further classification refering to the "upstream project" where the PPDs come from and where they were created for.
  3. To seperate PPDs from different manufacturers a further classification by make/manufacturer of the printer under "upstream_reference" is necessary.
  4. The database is formed by several packages which provide PPD files inside this structure and it is not necessary to install all off these packages.
  5. Two different packages should not provide the same PPDs to avoid duplicate printer model entries in GUI tools.

Implementation

  1. PPDs should be located in /usr/share according to the Filesystem Hierarchy Standard because they contain static and arch-independent information.
  2. As common directory /usr/share/ppd should be used (this directory is currently used for this purpose).

  3. This ppd directory should contain subdirectories that refer to the name of the "upstream project" where the PPDs come from and where they were created for. I believe this to be the best classification:
    • /usr/share/ppd/cups-included for non-PostScript PPDs that come with cups;

    • /usr/share/ppd/linuxprinting.org-gs for non-PostScript PPDs from linuxprinting.org's foomatic-db project that can be used with binary printer drivers built into Ghostscript (GPL or ESP version) or with filters making use of Ghostscript to provide a printer independent raster format;

    • /usr/share/ppd/linuxprinting.org-postscript for real PPDs for PostScript printers from linuxprinting.org's foomatic-db project;

    • /usr/share/ppd/hpijs for non-PostScript PPDs from HPLIP project;

    • /usr/share/ppd/gutenprint for non-PostScript PPDs from gutenprint project;

  4. The above mentioned directory should contain subdirectories according to the *Manufacturer string as specified in the [http://partners.adobe.com/public/developer/en/ps/5003.PPD_Spec_v4.3.pdf PPD specification v4.3]. The *Manufacturer strings are case sensitive and must be noted literally as in the PPD specification. ?BR e.g. /usr/share/ppd/linuxprinting.org-gs-filters/Lexmark, /usr/share/ppd/hpijs/HP, ...

  5. PPDs may be gzipped to reduce disk space usage. Gzipping the individual PPD files may increase the package size a lot. The decision is up to the package maintainer.
  6. Inside the PPDs a *Manufacturer string should be used as specified in the Adobe PPD specification v4.3.
  7. Packages that need PPDs are responsible for symlinking to the PPDs in /usr/share/ppd. For example the cupsys package should simply include a symlink from /usr/share/cups/model/ppd to /usr/share/ppd.
  8. Packages that provide PPDs should NOT contain symlinks for other packages that need PPDs. The reason for this is that symlinks from different PPD providing packages can overlap each other resulting in duplicate drivers being seen by GUI tools (which are actually the same).

Current PPD providing packages in Debian

  • cupsys
  • foomatic-filters-ppds
  • hplip-ppds
  • PPDs generated when installing package cupsys-driver-gutenprint
  • linuxprinting.org-ppds
  • hp-ppd

Current issues

  • hplip-ppds package incorrectly uses *Manufacturer: "HP (HPLIP)" inside PPDs. ?BR See [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=347264 bug #347264] [SOLVED].

  • foomatic-filters-ppds package contains the same hpijs ppds as hplip-ppds package. To avoid this duplication hpijs PPDs should be provided by only one package. The hpijs ppds should be provided by hplip-ppds package so they always match with the installed version of binary HPIJS Ghostscript drivers. Hpijs ppds from hplip project should be removed from package foomatic-filters-ppds. ?BR See [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=347668 bug #347668] [SOLVED].

  • hp-ppd package should be deprecated because it is not actively maintained anymore. ?BR A package foomatic-db-postscript-ppds could be created to replace hp-ppd, this package should contain real PPDs for PostScript printers from foomatic-db project found at http://www.linuxprinting.org (this project currently contains real PPDs from different printer manufacturers). ?BR A new package linuxprinting.org-ppds has been created by Chris Lawrence [SOLVED].

  • CUPS does not yet include the symbolic link. See [http://bugs.debian.org/358186 bug #358186].

  • Where to put user-provided PPD files? (Proposal: /usr/share/ppd/custom -> /etc/ppd/ symlink; which package owns that?) It needs to be group-writable by user lpadmin, so that printer admins can install PPDs through e. g. gnome-cups-manager.