[Openicc] What is exactly needed for color management ... driver setup PPD
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