[Openicc] What is exactly needed for color management ... driver setup PPD

Till Kamppeter till.kamppeter at gmail.com
Wed Jun 1 04:48:36 PDT 2011

On 06/01/2011 12:42 PM, Kai-Uwe Behrmann wrote:
> How are PPD options like gamma or brightness get passed to Gutenprint?
> Would it suffice to place the Gutenprint calibration XML in the PPD to
> pass to Gutenprint driver?

Every CUPS filter has access to the PPD file to read out things like 
default option settings and also any other definition in the PPD, like 
ICC profile definitions, basic printer properties, ... In addition, the 
filter gets called with a special command line, where the 5th argument 
is a space-separated list of option settings containing all settings 
supplied with the job as IPP attributes, especially the settings of PPD 
options given  by the user in the printing dialog.

Ghostscript's ..toraster filters also read the PPD and the 5th command 
line argument. If the input is PDF, the filter parses the PostScript 
code snippets of the selected option settings (selected by PPD defaults 
and 5th command line argument) from the PPD and adds appropriate command 
line arguments to the Ghostscript command line. In case of PostScript 
input the pstops CUPS filter inserts the PostScript code pieces into the 
PostScript data stream and Ghostscript applies them. In both cases the 
header, color space, bitmap size, resolution, and format of the CUPS 
raster file get set (see 
http://www.cups.org/documentation.php/doc-1.5/spec-raster.html) for the 
CUPS Raster format specifications. The CUPS Raster header can carry 
driver-specific data, but only 16 integers, 16 floating point numbers, 
and 16 strings iwth up to 64 bytes each, no embedded ICC profile.

Poppler's pdftoraster filter is supposed to do the same thing.

I do not know which of these resources rastertogutenprint exactly uses, 
but due to the fact that a color profile cannot get embedded in a CUPS 
Raster data stream, the color correction of the profile has to be 
applied by the ...toraster filter (Ghostscript or Poppler).

Note that everything placed in the PPD is a system-wide default for the 
print queue. It cannot be specific to the user or to the job.


More information about the openicc mailing list