Bug 700931 - OutputICCProfile ignored for pdfwrite?
Summary: OutputICCProfile ignored for pdfwrite?
Status: RESOLVED INVALID
Alias: None
Product: Ghostscript
Classification: Unclassified
Component: Color Management (show other bugs)
Version: 9.26
Hardware: PC Windows 10
: P4 normal
Assignee: Michael Vrhel
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-04-01 01:45 UTC by i3v
Modified: 2019-04-02 22:13 UTC (History)
0 users

See Also:
Customer:
Word Size: ---


Attachments
Example input and output files (273.48 KB, application/x-7z-compressed)
2019-04-01 01:47 UTC, i3v
Details

Note You need to log in before you can comment on or make changes to this bug.
Description i3v 2019-04-01 01:45:59 UTC
The https://www.ghostscript.com/doc/9.26/VectorDevices.htm#PDFX says: 
> Even if you are using a standard OutputCondition and do not need to specify an ICCProfile, 
> you must still set OutputICCProfile with an appropriate ICC profile in order for proper 
> color conversion

However, the following experiments suggest that this parameter is completely ignored, actually.
(Based on "cmyk_des_renderintent.icc", "default_cmyk.icc" and "PDFX_def.ps" see attached)


  [v11] With `-sOutputICCProfile="default_cmyk.icc"` and `/ICCProfile (default_cmyk.icc) def`. 
        The result looks somewhat as-expected. This would be "the reference result".
> gswin64c -dPDFX -dBATCH -dNOPAUSE -dHaveTransparency=false -r20 
> -dProcessColorModel=/DeviceCMYK -sColorConversionStrategy=CMYK -I. 
> -sDefaultRGBProfile="default_rgb.icc" -sOutputICCProfile="default_cmyk.icc" 
> -dRenderIntent=0 -dDefaultRenderingIntent=/Perceptual -sDEVICE=pdfwrite 
> -sOutputFile=colorbar_x3_v11.pdf PDFX_def_cmyk.ps colorbar.pdf
       
  [v12] Changing the following: `-sOutputICCProfile="cmyk_des_renderintent.icc"`.
> gswin64c -dPDFX -dBATCH -dNOPAUSE -dHaveTransparency=false -r20 
> -dProcessColorModel=/DeviceCMYK -sColorConversionStrategy=CMYK -I. 
> -sDefaultRGBProfile="default_rgb.icc" -sOutputICCProfile="cmyk_des_renderintent.icc" 
> -dRenderIntent=0 -dDefaultRenderingIntent=/Perceptual -sDEVICE=pdfwrite 
> -sOutputFile=colorbar_x3_v12.pdf PDFX_def_cmyk.ps colorbar.pdf

  [v13] Dropping `-sOutputICCProfile`.
> gswin64c -dPDFX -dBATCH -dNOPAUSE -dHaveTransparency=false -r20 
> -dProcessColorModel=/DeviceCMYK -sColorConversionStrategy=CMYK -I. 
> -sDefaultRGBProfile="default_rgb.icc" 
> -dRenderIntent=0 -dDefaultRenderingIntent=/Perceptual -sDEVICE=pdfwrite 
> -sOutputFile=colorbar_x3_v13.pdf PDFX_def_cmyk.ps colorbar.pdf

Result: binary comparison of v11, v12, v13 outputs shows that they are only different in "/CreationDate" (and "/ID"). Thus, it looks like those statement in `VectorDevices.htm` is not 
true. Or... am I missing something?

================================================================================================
Few more experiments, just-in-case:

  [v14] if I modify v12 by dropping `-dPDFX` and `PDFX_def_cmyk.ps`, I get file that is 
        significanlly smaller (probably, due to no large icc). But it looks the same.
> gswin64c -dBATCH -dNOPAUSE -dHaveTransparency=false -r20 
> -dProcessColorModel=/DeviceCMYK -sColorConversionStrategy=CMYK -I. 
> -sDefaultRGBProfile="default_rgb.icc" -sOutputICCProfile="cmyk_des_renderintent.icc" 
> -dRenderIntent=0 -dDefaultRenderingIntent=/Perceptual -sDEVICE=pdfwrite 
> -sOutputFile=colorbar_x3_v14.pdf colorbar.pdf

  [v12t] if I set output device to tiff - the effects one should expect from 
         "cmyk_des_renderintent.icc" are clearly visible (even though there are some issues 
         with transparency, see https://bugs.ghostscript.com/show_bug.cgi?id=700929 ) 
> gswin64c -dPDFX -dBATCH -dNOPAUSE -dHaveTransparency=false -r20 
> -dProcessColorModel=/DeviceCMYK -sColorConversionStrategy=CMYK -I. 
> -sDefaultRGBProfile="default_rgb.icc" -sOutputICCProfile="cmyk_des_renderintent.icc" 
> -dRenderIntent=0 -dDefaultRenderingIntent=/Perceptual -sDEVICE=tiff32nc 
> -sOutputFile=colorbar_x3_v12t.tiff colorbar.pdf
  
  [v15] if I change the profile inside the prefix file 
        `/ICCProfile (cmyk_des_renderintent.icc) def` - I not only see that profile embedded 
        (e.g. Acrobat -> Preflight -> Analyze - > Results -> Overview -> Output Intents -> 
        CGATS TR001 -> ICC optput profile), I also do see that colors are not somewhat 
        different. But not like one might expect from that icc profile - instead they just look
        more saturated. Not sure what this means.

> gswin64c -dPDFX -dBATCH -dNOPAUSE -dHaveTransparency=false -r20 
> -dProcessColorModel=/DeviceCMYK -sColorConversionStrategy=CMYK -I. 
> -sDefaultRGBProfile="default_rgb.icc" -sOutputICCProfile="cmyk_des_renderintent.icc" 
> -dRenderIntent=0 -dDefaultRenderingIntent=/Perceptual -sDEVICE=pdfwrite 
> -sOutputFile=colorbar_x3_v15.pdf PDFX_IntCmyk.ps colorbar.pdf
Comment 1 i3v 2019-04-01 01:47:27 UTC
Created attachment 17288 [details]
Example input and output files
Comment 2 Ken Sharp 2019-04-01 07:10:13 UTC
First, would you mind tagging any more 'problems' with colour conversion and the pdfwrite device as 'PDF Writer' and not 'Color Management' please ?

As I've mentioned several times, the colour management performed by the pdfwrite device is quite different to the regular rednering devices, due to the fact that we want to retain as much information as possible, and *not* convert everything to a specific device space.

Tagging the reports with 'colour management' sets the Assignee incorrectly.

Comparing the pdfwrite behaviour with a rendering device is not helpful, the results will not often be the same.


In this case this is, once again, an aspect of the old colour management scheme, but since setting it does not harm the new scheme, its been left in place. When the old scheme is removed the documentation will be resolved.
Comment 3 i3v 2019-04-02 22:13:45 UTC
(In reply to Ken Sharp from comment #2)
Thanks for the fix!  

Just for the reference:
Now (since b987c511229ba0b70e6a7691366d530fa8db7444 ), doc/VectorDevices.htm does not mention "OutputICCProfile" at all, which is in line with the 
fact that it has no effect.