PuzzleFlow - Workflow

PF Tools Tutorial Color Management

Color Management

How to convert between CMYK, RGB, Lab color spaces using ICC profiles without losing color reliability.

There is no universal method to define color. Every screen-based and paper-based output device reproduces colors in a different way. In theory, common device-dependent color spaces (RGB and CMY) are reversible and can reproduce colors in the same way. In practice, however, each color space has a different range of colors (gamut) and cannot be simply transformed one into another without losing color reliability.

There are also device-independent color spaces which base on human-eye visual perception (CIE-based). But finally, they also need a transformation to device-dependent color spaces to generate a printable output. Such transformations usually cannot be expressed as linear equations and need a special calibration performed on the basis of the color profiles (standarized description of color transition called ICC profiles).


To reproduce colors in a predictable way we need to make a transition between the color spaces on the basis of the color profiles suitable for the specified output device. PuzzleFlow system provides a powerful color correction module (ColorManager) which performs an automated conversion of color spaces on the basis of the color profiles (*.icc, *.icm files).

How to extend your workflow or provide completely new one with PuzzleFlow at your place to achieve this functionality?

RGB to CMYK conversion

The simplest workflow for ICC-based color transformation consists of four elements:

  • HotFolder – an input folder of the workflow
  • ColorManager – performs a color conversion on the basis of the ICC-profiles
  • Resource – search and loads the needed ICC-profiles
  • OutputFolder – writes an output file in the selected location.

The module which performs color corrections is ColorManager. It needs the Resource module to load the specified ICC-profiles.

Go to the ColorManager configuration.

In the Target Device property tab specify the profile of the output device. The default location of the color profiles is %WINDIR%system32/spooldriverscolor, but you can select any other folder which contains ICC-profiles. For instance, it could be a folder of the program files of the device software.

If you need a color proof, select the option Enable proofing and select the color profile for the proofer device. Optionally, you can also convert device-independent colors to device-dependent color spaces and attach the profile to the output job.

Go to the RGB tab to select the source color profile. In most cases it will be a standard RGB profile such as Adobe RGB, Apple RGB or sRGB standard depending on the way the document (or image) has been created. Some objects in the document may have color profiles attached. You can decide if they are to be ignored, overwritten or just applied. Operation list allows selecting one of these dispositions.

All the options here, including rendering intent, can be specified distinctly for different kinds of objects, such as text, line-art, photographic images, indexed images and smooth shades. All these types of objects may have different color profile, general disposition and rendering intent.

Go to the Resource module property tab to configure searching options.

Add a new search rule to the list. Apply the rule for external resources referenced by internal resource name. The rule specification should say that if the query name (ICC-profile internal name in this case) is any and a query path is any, the module should use the selected directory for searching. It might be convenient to use system color directory for the standard profiles and ${RES}ICC (i.e. C:\PuzzleFlow\Resources\ICC) for the custom profiles.

If there are more than one directory for the referred color profiles there should also be more than one searching rule. In such a case, each searching rule applies to one directory. If the module cannot find some query in one directory it goes to the subsequent rule. The operation is repeated until the query is found or to the end of the rules. The missing color profiles cause an error.

You can use the workflow for all kinds of documents, not only for those which contain RGB objects. If the document is entirely defined in CMYK color spaces, no conversions are applied and the document is just passed to the subsequent modules or queues.

Conversion to Gray

PuzzleFlow comes with a utility to create its own ICC profiles for Gray, RGB and Lab color spaces. The example below describes conversion to Gray color space using the color profiles generated with Profile Creator.

Run the Profile Creator application and select Profile type Gray.

In the next property tab specify the White point and optional Black point parameters.

Setup Gamma in the next property tab. Finally define a profile name (an internal resource name) and the localization of the output ICC file.

Click Finish to close the wizard.

The workflow is almost the same as described for RGB to CMYK conversion. It consists of four elements, namely HotFolder, ColorManager with Resource attached and the OutputFolder. The only difference is that we select the color profile just created as a target device profile.

Configure source profile property tabs depending on color spaces used in the input job. If you are not sure about color spaces used in the document, you can check them using Preflighter module. You can either configure the ColorManager module to convert all kinds of color spaces (RGB and CMYK in this case) regardless they occur or not in the input job. Configuring ColorManager to convert color spaces non-existing in input documents do not cause an error.

If the new color profile has not been saved in the standard system color directory, you have to add the searching rule to the Resource module configuration.


Although not commonly used, there are alternative to CMYK device color spaces such as PANTONE Hexachrome standard. Hexachrome system consist of six color components, usually cyan, magenta, yellow, black, orange and green. Hexachrome provides more reliable color reproduction for colors that can’t be made using standard CMYK components. In example, it can be used to reproduce photographic images in the way suitable for human-eye perception.

In the example above, the hexachrome profile with Perceptural rendering intent will be used to reproduce colors of photographic images embeded in the document.

First four components of the hexachrome are the same as in standard CMYK color space. However, they should be defined as special colors but with standard names (Cyan, Magenta, Yellow, Black respectively). Actually, you don’t have to worry about that since ColorManager takes care about the proper color definitions.

PuzzleFlow color management system handles hexachrome color profiles. The workflow for hexachrome conversion is the same as described above for RGB to CMYK transition. It consist of HotFolder, ColorManager with attached Resource and the OutputFolder. The only difference is that we have to select a special hexachrome (or any other n-tone) ICC-profile for the output device. If the loaded profile is recognized as n-tone, an additional property tab is available.

The property tab lists all the color components specified by the profile in their base color space. The base color space for each of inks from the example above is Lab.

By default, the inks of the profile can be named Ink-1 up to Ink-6. If we leave this set untouched, after the conversion each ink will be treated as a special color. But what we should do here is to use the first four colors as process colors and only orange and green as special colors. To achieve this effect, just assign proper names to the process inks – Cyan, Magenta, Yellow, Black respectively – as shown in the illustration.

When the ProfileInks property tab is configured, start the workflow and load the job. To ensure that the output colors are defined in a hexachrome system, open the output document in Acrobat 6.0 or higher. Go to the Advanced menu and select the Separation preview option. The separation list may look like in the illustration below.