[Openicc] questions about cupsICC on remote CUPS servers

Jan-Peter Homann homann at colormanagement.de
Tue May 17 07:57:19 PDT 2011

Hello all,
Following the dicussions in the OpenICC list, i have the impression, 
that a color managed print path with a remote CUPS server is somehow 
more tricky to implement, than a local installation.

see e.g. statements from Hal. V. Engel

 > There is no good reason to point cups clients at localhost if the spool

 > is actually on another box. lpoptions should specify the remote spool

 > as one's default printer in such cases. And with that, both the CUPS

 > API and http over port 631 should give direct access to the PPD.

Direct access to the PPD is already supported and this makes it possible 
to get a list of CUPS configure profiles (IE. CUPSICCProfile entries). 
Oyranos apready does this. But on remote print servers there is no way 
to retrieve one of these profiles for things like proofing. HTTP over 
port 631 does not expose the profiles unless you create a sym-link from 
the dirrectory that is visible using http and port 631 to the profiles 
directory. At best this is a hack but it would allow us to create a 
"retrieve proofing profile" API for prototyping purposes without too 
much effort so that how all of this works from a user prespective could 
be tested.

Reading such discussion I realize, that I need a deeper understanding of 
some Aspects of CUPS based workflows. Hopefully somebody could answer to 
my questions:

1) Dynamic updating of PPDs for a remote CUPS server
Are there tools available, which allow to update automatically a PPD 
representing a remote CUPS server ?
The use case here would be the installation of new combinations of 
ICC-profiles with assigned driver settings on the CUPS server with an 
automatic update of the cupsICC entries in the PPD.

2) CUPS client pulling PPD from the remote CUPS server
Are tools available, which allow a CUPS cleint to pull a PPD from the 
remote CUPS server ?
(The usecase here is, that the printing GUI for sending a print job gets 
an update, which driver settings (media / resolution) are available at 
the remote server.

3) Configuration of target profile in pdftoraster based on cupsICC
As being not a developer, the following described workflow is may 
uncorrect in terms, that i`m using, so please correct me, if I´m wrong:

- An administrator for the remote CUPS server installes new printer 
profiles with assigend driver settings
- The PPD for the remote CUPS server gets an update for installed driver 
settings and links between driver settings (media / resolution) and 
server side printer profiles.
- In the print chooser on client side (e.g. CPD) the media / resolution 
settings extracted from the PPD are always representing the settings and 
profiles on the server side.
- The user chooses one of the media / resolution settings and sends the 
print job to the CUPS server.
- The CUPS server reads the media / resolution settings from the 
printjob and selects the approbiate printer profile through cupsICC match.
- The selected printer profile will be automatically configured as 
target-profile in server side pdftoraster (GhostScript)
- Gutenprint reads also the media / resolution settings from the CUPS 
datastream and uses the correct Gutenprint configuration to output the 
rasterfile from pdftoraster

- optional: (pdftoraster embedds the printerprofile into the rasterfile 
for e.g. rastertogutenprint. Gutenprints extracts the Gutenprint 
settings, which have been embedded into the printer profile before.

- Workflow for creating media /resolution settings for ICC-off in 
- an existing media / resolution settings is duplicated with a new 
naming for media "GlossyNoICC"
- no cupsICC entry will be associated with this new setting
- pdftoraster will not triggered via cupsICC with a printer profile and 
creates the rasterfile for rastertogutenprint without any ICC-transformation
- gutenprints reads the media / resolution parameters from the cups 
stream an outputs the raster file with the correct settings

Is such a workflow possible ?

If yes, is it correct, that such a workflow with a remote server could 
also be used with a local CUPS installation ?

Maybe this decribed workflow is version wich could be implemented more 
or less with the available tools and minor improvements e.g. for CPD to 
pull the PPD from the remote server:

The goals to reach would be:
- Make the installation of new printer profiles with assigend driver 
setting easy on CUPS server
- Avoid any possible mistakes with profile handling on the client side
- Only very few improvements on CPD are necessary

- compatible with existing DeviceRGB print spool formats
- allows invisible sRGB->printer colormanagement for standard users
- open for the professional users a path for creating printing paths 
with disabled ICC transformation in pdftoraster

- allow crowd profiling for for the open source printing community
- use the same workflow both for local and remote CUPS server installations

Goals wich are not reached in this step
- No preview possible, because profiles could not be pulled from CUPS 
remote server
- no link to local color management frameworks like Oyranos or g-c-m / 
colord, because profiles could not be pulled from CUPS remote server

Such goals could be implemented later, if pulling of profile from the 
CUPS server is realized.


Comments and corrections are welcome

----------  Please note the new adress --------------

homann colormanagement --------- fon +49 30 611 075 18
Jan-Peter Homann ------------ mobile +49 171 54 70 358
Cotheniusstr. 3 -------- http://www.colormanagement.de
10407 Berlin -------- mailto:homann at colormanagement.de

More information about the openicc mailing list