Converting PDF to CMYK (with identify recognizing CMYK) Converting PDF to CMYK (with identify recognizing CMYK) linux linux

Converting PDF to CMYK (with identify recognizing CMYK)


sdaau, the command you used for trying to convert your PDF to CMYK was not correct. Try this one instead:

 gs \   -o test-cmyk.pdf \   -sDEVICE=pdfwrite \   -sProcessColorModel=DeviceCMYK \   -sColorConversionStrategy=CMYK \   -sColorConversionStrategyForImages=CMYK \    test.pdf 

Update

If color conversion does not work as desired and if you see a message like "Unable to convert color space to Gray, reverting strategy to LeaveColorUnchanged" then...

  1. your Ghostscript probably is a newer release from the 9.x version series, and
  2. your source PDF likely uses an embedded ICC color profile

In this case add -dOverrideICC to the command line and see if it changes the result as desired.


Update 2

To avoid JPEG artifacts appearing in the images (where there were none before), add:

-dEncodeColorImages=false

into the command line.

(This is true for almost all GS PDF->PDF processing, not just for this case. Because GS by default creates a completely new file with newly constructed objects and a new file structure when asked to produce PDF output -- it doesn't simply re-use the previous objects, as a more "dumb" PDF processor like pdftk does {pdftk has other advantages though, don't misunderstand my statement!}. GS applies JPEG compression by default -- look at the current Ps2pdf documentation and search for "ColorImageFilter" to learn about more details...)


I have an unrelated problem but I am also struggling with CMYK PDFs currently.

I wrote this little script here (it's called pdf2pdfx):

#!/bin/bashgs \-dPDFX \-dBATCH \-dNOPAUSE \-dNOOUTERSAVE \-sDEVICE=pdfwrite \-sColorConversionStrategy=CMYK \-dProcessColorModel=/DeviceCMYK \-dPDFSETTINGS=/prepress \-sOutputFile="${1%%.pdf}_X-3.pdf" \PDFX_def.ps \"$1"

and my PDFX_def.ps contains the following (I removed the ICC profile and defined FOGRA39, this should be OK):

%!% $Id$% This is a sample prefix file for creating a PDF/X-3 document.% Feel free to modify entries marked with "Customize".% This assumes an ICC profile to reside in the file (ISO Coated sb.icc),% unless the user modifies the corresponding line below.systemdict /ProcessColorModel known {  systemdict /ProcessColorModel get dup /DeviceGray ne exch /DeviceCMYK ne and} {  true} ifelse{ (ERROR: ProcessColorModel must be /DeviceGray or DeviceCMYK.)=  /ProcessColorModel cvx /rangecheck signalerror} if% Define entries to the document Info dictionary :% /ICCProfile (/usr/share/color/icc/ISOcoated_v2_300_eci.icc) def  % Customize or remove.[ /GTS_PDFXVersion (PDF/X-3:2002) % Must be so (the standard requires).  /Title (Title)                  % Customize.  /Trapped /False                 % Must be so (Ghostscript doesn't provide other).  /DOCINFO pdfmark% Define an ICC profile :currentdict /ICCProfile known {  [/_objdef {icc_PDFX} /type /stream /OBJ pdfmark  [{icc_PDFX} <</N systemdict /ProcessColorModel get /DeviceGray eq {1} {4} ifelse >> /PUT pdfmark  [{icc_PDFX} ICCProfile (r) file /PUT pdfmark} if% Define the output intent dictionary :[/_objdef {OutputIntent_PDFX} /type /dict /OBJ pdfmark[{OutputIntent_PDFX} <<  /Type /OutputIntent              % Must be so (the standard requires).  /S /GTS_PDFX                     % Must be so (the standard requires).  /OutputCondition (Commercial and specialty printing) % Customize  /Info (none)                     % Customize  /OutputConditionIdentifier (FOGRA39)      % Customize  /RegistryName (http://www.color.org)   % Must be so (the standard requires).  currentdict /ICCProfile known {    /DestOutputProfile {icc_PDFX}  % Must be so (see above).  } if>> /PUT pdfmark[{Catalog} <</OutputIntents [ {OutputIntent_PDFX} ]>> /PUT pdfmark

Identify then correctly reports CMYK colorspace.Before:

tbart@blackknight ~/orpheus/werbung/action $ identify -verbose action_schulungsvideo_v3_print.pdfImage: action_schulungsvideo_v3_print.pdf  Format: PDF (Portable Document Format)  Class: DirectClass  Geometry: 612x859+0+0  Resolution: 72x72  Print size: 8.5x11.9306  Units: Undefined  Type: TrueColor  Endianess: Undefined  Colorspace: RGB  Depth: 16/8-bit  Channel depth:    red: 8-bit    green: 8-bit    blue: 8-bit  Channel statistics:    Red:      min: 0 (0)      max: 65535 (1)      mean: 53873.6 (0.822058)      standard deviation: 19276.7 (0.294144)      kurtosis: 1.854      skewness: -1.82565    Green:      min: 0 (0)      max: 65535 (1)      mean: 55385.6 (0.84513)      standard deviation: 19274.6 (0.294112)      kurtosis: 2.09868      skewness: -1.91651    Blue:      min: 0 (0)      max: 65535 (1)      mean: 51020 (0.778516)      standard deviation: 20077.7 (0.306367)      kurtosis: 0.860627      skewness: -1.52344  Image statistics:    Overall:      min: 0 (0)      max: 65535 (1)      mean: 53426.4 (0.815235)      standard deviation: 19546.7 (0.298263)      kurtosis: 1.59453      skewness: -1.75701  Rendering intent: Undefined  Interlace: None  Background color: white  Border color: rgb(223,223,223)  Matte color: grey74  Transparent color: black  Compose: Over  Page geometry: 612x859+0+0  Dispose: Undefined  Iterations: 0  Compression: Undefined  Orientation: Undefined  Properties:    date:create: 2011-09-14T15:38:57+02:00    date:modify: 2011-09-14T15:38:57+02:00    pdf:HiResBoundingBox: 612.283x858.898+0+0    pdf:Version: PDF-1.5     signature: 210bfc9cf90e3b9505385f8b2267da1665b5c2de28bb5223311afba01718bbeb  Artifacts:    verbose: true  Tainted: False  Filesize: 1.577MBB  Number pixels: 526KB  Pixels per second: 52.57MB  User time: 0.020u  Elapsed time: 0:01.009  Version: ImageMagick 6.6.5-6 2011-04-08 Q16 http://www.imagemagick.org

after:

tbart@blackknight ~/orpheus/werbung/action $ pdf2pdfx action_schulungsvideo_v3_print.pdfGPL Ghostscript 9.04 (2011-08-05)Copyright (C) 2011 Artifex Software, Inc.  All rights reserved.This software comes with NO WARRANTY: see the file PUBLIC for details.Processing pages 1 through 1.Page 1tbart@blackknight ~/orpheus/werbung/action $ identify -verbose action_schulungsvideo_v3_print_X-3.pdf Image: action_schulungsvideo_v3_print_X-3.pdf  Format: PDF (Portable Document Format)  Class: DirectClass  Geometry: 612x859+0+0  Resolution: 72x72  Print size: 8.5x11.9306  Units: Undefined  Type: ColorSeparation  Base type: ColorSeparation  Endianess: Undefined  Colorspace: CMYK  Depth: 16/8-bit  Channel depth:    cyan: 8-bit    magenta: 8-bit    yellow: 8-bit    black: 8-bit  Channel statistics:    Cyan:      min: 0 (0)      max: 65535 (1)      mean: 8331.78 (0.127135)      standard deviation: 14902.2 (0.227392)      kurtosis: 1.62171      skewness: 1.7799    Magenta:      min: 0 (0)      max: 62194 (0.94902)      mean: 6739.34 (0.102836)      standard deviation: 14517.5 (0.221523)      kurtosis: 2.08183      skewness: 1.93276    Yellow:      min: 0 (0)      max: 65535 (1)      mean: 13310.1 (0.203098)      standard deviation: 17022.5 (0.259746)      kurtosis: 0.991135      skewness: 1.45216    Black:      min: 0 (0)      max: 56540 (0.862745)      mean: 7117.47 (0.108606)      standard deviation: 16803.7 (0.256408)      kurtosis: 3.02752      skewness: 2.16554  Image statistics:    Overall:      min: 0 (0)      max: 65535 (1)      mean: 8874.66 (0.135419)      standard deviation: 15850.6 (0.241864)      kurtosis: 2.17614      skewness: 1.88139  Total ink density: 292%  Rendering intent: Undefined  Interlace: None  Background color: white  Border color: cmyk(223,223,223,0)  Matte color: grey74  Transparent color: black  Compose: Over  Page geometry: 612x859+0+0  Dispose: Undefined  Iterations: 0  Compression: Undefined  Orientation: Undefined  Properties:    date:create: 2011-09-14T15:39:30+02:00    date:modify: 2011-09-14T15:39:30+02:00    pdf:HiResBoundingBox: 612.28x858.9+0+0    pdf:Version: PDF-1.3     signature: 0416db7487ea147b974ece5748bc4284e82bfc3fb7cd07a4de050421ba112076  Artifacts:    verbose: true  Tainted: False  Filesize: 2.103MBB  Number pixels: 526KB  Pixels per second: 5.25708PB  User time: 0.000u  Elapsed time: 0:01.000  Version: ImageMagick 6.6.5-6 2011-04-08 Q16 http://www.imagemagick.org

This is on 64bit Gentoo with gs 9.04Maybe that helps?

Source PDF stems from inkscape pdf export, colors were restricted to those covered in ECI ISO coated v2.I use this as a workaround for the lacking CMYK export of inkscape and the lacking prepress-ready PDF/X output...


Ok, here is something, at least...

Originally, I need this as a way to make sure that my PDF files are in CMYK, and have the text as "plain black" C:0, M:0, Y:0, K:100 - since I've had problems with printers previously, where they would complain about my Latex PDFs containing "rich black" for text (which thus cost more). And I usually go for identify since it seems to be the only tool that can parse PDFs and colors (and it is also relatively easy to remember).

Well, I read through Tech Tip: Using Ghostscript to Convert and Combine Files | Linux Journal; where it is recommended to use the tiffsep device of gs to obtain separations. And this for me fulfills the same role as identify; I can just do:

$ gs -sDEVICE=tiffsep -dNOPAUSE -dBATCH -dSAFER -r150x150 -sOutputFile=p%08d.tif test.pdf $ ls p*p00000001.Black.tif  p00000001.Magenta.tif  p00000001.Yellow.tif  p00000001.Cyan.tif   p00000001.tif$ eog p00000001.tif

... and then I can just 'iterate' through the separation images using left/right arrow - and it is immediately obvious if it is 'plain black' or 'rich black'.

So this shows that, regardless of what identify shows, the test.pdf from pdflatex actually has 'plain black' as text color, as it is supposed to (the other separations are blank) - however, doing something like:

# do a conversion of original PDF$ gs -dPDFA -dBATCH -dNOPAUSE -dNOOUTERSAVE -dUseCIEColor -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sOutputFile=out_pdfa.pdf test.pdf# do a separation on the converted pdf$ gs -sDEVICE=tiffsep -dNOPAUSE -dBATCH -dSAFER -r150x150 \  -dFirstPage=1 -dLastPage=1 -sOutputFile=p%08d.tif out_pdfa.pdf# view$ eog p00000001.tif

... will reveal that the particular out_pdfa.pdf actually has 'rich black' - i.e. ink for text goes over all four separations! (identify also shows this one as RGB, too).

So, I hope that this gs/tiffsep technique is more reliable than identify :)

 

Note: I'm using Ubuntu Natty, which ships GhostScript 9.01 - however, that one has a nasty bug with tiffsep: Bug 691857 – tiffsep crashes in Version 9 (missing lab.icc). That has been fixed for 9.02 - and 9.02 has been released as ghostscript in oneiric. To use 9.02 under Natty, I followed how to update a single package using apt-get? - Ubuntu Forums:

sudo nano /etc/apt/sources.list # add deb http://archive.ubuntu.com/ubuntu/ oneiric main restrictedsudo apt-get updatesudo apt-get install ghostscript # this upgrades only gs and dependencies sudo nano /etc/apt/sources.list  # remove/comment oneiric reposudo apt-get update && sudo apt-get upgrade # should be back to normal here

Note that with the buggy 9.01 version, even this command would fail:

$ GS_LIB=/usr/share/ghostscript/9.01/iccprofiles/ gs -sICCProfilesDir=/usr/share/ghostscript/9.01/iccprofiles/ -sDEVICE=tiffsep -dNOPAUSE -dBATCH -dSAFER -sOutputFile=p%08d.tif out_pdfa.pdf...sfopen: gs_parse_file_name failed.sfopen: gs_parse_file_name failed.... gsicc_open_search(): Could not find lab.icc ...

.. and with 9.02, there is no need to specify sICCProfilesDir explicitly.