Question

Is it possible to pre-process (in batch) PDFs that are in CMYK format to separate out into spot colours?

I have a collection of PDFs that are in CMYK but I require them to be in a 2 spot colour format.

The colours are red and black. The black (K) is fine, but the red spot needs to be a merge of the Magenta & Yellow.

Is this possible at all? I'd prefer something that would be able to separate spots based on a given colour rather than merging colours as that becomes very limited.

I've looked in adobe acrobat X pro and that doesn't seem to do what I want. I could probably do it manually in photoshop but it would be a long winded process for the large amount of PDFs I have.

Was it helpful?

Solution

I'm guessing this problem was long solved, but just for completeness; yes, this can be done. There are a number of commercial tools that do exactly this very easily actually.

1) If I'm not mistaken, the latest version of Adobe Acrobat actually contains a lot more PDF file correction possibilities than previous versions, which means it should be able to do this.

2) There are tools like callas pdfToolbox (warning, I'm affiliated with this company/product) that can pre-process a PDF file pretty much any which way you want.

In general though I think the first question would be why you go through the RGB to CMYK step - the tools than can do this kind of remapping would equally be able to simply go from Black and Red RGB directly to two named spot colors, avoiding the unnecessary CMYK conversion.

By the way, if what you are trying to obtain is a PDF where you can switch one color off easily (such as for example to hide the correct answers), there are probably better ways to do this. Such as putting all red text on one layer for example, while putting all black text on a different layer (or OCG - optional content group as PDF calls them). This would give you to capability to switch colored text on or off at will, even in something like Adobe Reader.

OTHER TIPS

This is the simple implementation which will print solid black or anything that is not black. Depending on your needs, it may need to get more complex. Without knowing more, I took the brute force approach of using exitserver. exitserver allows the default operation of the RIP to be redefined. To restore the RIP to its normal operation, you need to reboot the rip or write another exit server routine to undefine the server modification.

The routine is installed in the rip by sending the exitserver postscript code. For a PC, this can be done with a DOS copy command to the printers share. There are also sendps programs which can be found on the web to sent the file to the device.

copy redef1.ps \\127.0.0.1\psprinter

This exitserver routine defines a /setcmykcolor function in the userdict, which will take precedence over the setcmykcolor in the system dict. there will 4 numbers on the stack where the last in will be the black. The back value is duplicated and compared to zero. If the black is not zero, the black block will be performed, otherwise the not black will execute. 0 setgray=black and 1 setgray=white, so as the block exists below, black will print as black and everything else will print as white.

%!
serverdict begin 0 exitserver
userdict begin /setcmykcolor 
{
    dup 0 ne
    {
        %black
        0 setgray
        pop pop pop pop
    }
    {
        %not black
        1 setgray
        pop pop pop pop
    }ifelse
} def end

By reversing the value of setgray, the black will not print and everything else "not black" would print.

%!
serverdict begin 0 exitserver
userdict begin /setcmykcolor 
{
    dup 0 ne
    {
        %black
        1 setgray
        pop pop pop pop
    }
    {
        %not black
        0 setgray
        pop pop pop pop
    }ifelse
} def end

It won't matter what program you print from. whichever version of the exitserver is last loaded, will be the way the output will print.

Here is a simple .ps example

%!PS-Adobe-3.0 
%%Title: mwe.ps
%%Pages: 001
%%BoundingBox: 0 0 595 842
%%EndComments
%%Page: 1 1
%%PageBoundingBox: 0 0 595 842
/Times-Roman findfont 72 scalefont setfont
0 0 0 1 setcmykcolor
0 20 moveto (black) show
0 1 0 0 setcmykcolor
0 40 moveto (not black) show
0 0 0 1 setcmykcolor
0 60 moveto (black) show
1 0 0 0 setcmykcolor
0 80 moveto (not black) show
0 0 0 1 setcmykcolor
0 100 moveto (black) show
0 1 1 0 setcmykcolor
0 120 moveto (not black) show

showpage

The output will display only "black" or "not black", but the text overprints, so you will see a ghost image of whichever color is not printing.

This is an exitserver to restore the RIP to use the normal setcmykcolor

%!
serverdict begin 0 exitserver
userdict /setcmykcolor undef 

As stated at the beginning, this is a simple implementation, such as allowing tints of black and not black There could also be variations of colors where small amounts of black mixed with color could fool the simple routine to where a dark red 0 .87 .75 .1 setcmykcolor would be defined as black, where it probably should be not-black.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top