Differences between revisions 15 and 16
Revision 15 as of 2006-01-16 19:11:06
Size: 7397
Editor: ?PascalDeVuyst
Comment:
Revision 16 as of 2006-01-16 19:19:07
Size: 7276
Editor: ?PascalDeVuyst
Comment: simplification + bug status
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
Please openly discuss this on [http://lists.debian.org/debian-printing/ debian-printing mailing list]. Please openly discuss this on [http://lists.debian.org/debian-printing/ debian-printing mailing list].'''
Line 6: Line 6:
Created: 05/01/2006 by [mailto:pascal.devuyst@gmail.com Pascal De Vuyst] [[BR]] Created: 05/01/2006 by Pascal De Vuyst [[BR]]
Line 8: Line 8:
Contributors: [mailto:rleigh@whinlatter.ukfsn.org Roger Leigh], [mailto:hmh@debian.org Henrique de Moraes Holschuh] and [mailto:lawrencc@debian.org Chris Lawrence] [[BR]] Contributors: Roger Leigh, Henrique de Moraes Holschuh and Chris Lawrence [[BR]]

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: 16/01/2006 ?BR Contributors: Roger Leigh, Henrique de Moraes Holschuh and Chris Lawrence ?BR Packages affected: foomatic-filters-ppds, hplip-ppds, cupsys-driver-gutenprint 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 (PPDs) for PostScript and non-PostScript printers. These packages should cooperate to form a single database of unique PPDs. This allows GUI tools like gnome-cups-add, foomatic-gui, ... 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 easy and fast: ?BR common directory/upstream project/manufacturer/filename.ppd

  1. The database of PPDs should be located in a common directory.
  2. Furthermore PPDs should be classified according to the upstream project (foomatic-db, hplip or gutenprint) where they originate from to avoid possible filename clashes between projects.
  3. Inside "upstream project" a further classification by manufacturer of the printer 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 according to the "upstream project" where the PPDs originate from:
    • /usr/share/ppd/foomatic-db for non-PostScript PPDs from foomatic-db project;

    • /usr/share/ppd/hplip for PPDs from hplip project;

    • /usr/share/ppd/gutenprint for PPDs from gutenprint project;

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

  4. The foomatic-db, hplip, gutenprint and (foomatic-db-)postscript 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/gs/HP, /usr/share/ppd/postscript/Epson, /usr/share/ppd/gs/Lexmark, ...

  5. All PPDs should be gzipped to reduce disk space usage.
  6. Inside the PPDs a *Manufacturer string should be contained according to the PPD specification (case-sensitive).
  7. Packages that need PPDs should symlink 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.

Current PPD packages in Debian

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

Current issues that need to be addressed

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

  • 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] [RESOLVED].

  • 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) [IN PROGRESS].