是否可以预处理(批量)CMYK 格式的 PDF 以分离成专色?
我有一组 CMYK 格式的 PDF,但我要求它们采用 2 专色格式。
颜色是红色和黑色。黑色(K)很好,但红色点需要是洋红色和黄色的合并。
这可能吗?我更喜欢能够根据给定颜色分离斑点的东西,而不是合并颜色,因为这变得非常有限。
我查看了 adobe acrobat X pro,但这似乎并没有达到我想要的效果。我可能可以在 Photoshop 中手动完成,但对于我拥有的大量 PDF 来说,这将是一个漫长的过程。
我猜这个问题早就解决了,但只是为了完整性;是的,这是可以做到的。有许多商业工具实际上很容易做到这一点。
1)如果我没记错的话,最新版本的 Adobe Acrobat 实际上比以前的版本包含更多的 PDF 文件更正可能性,这意味着它应该能够做到这一点。
2)有像 callas pdfToolbox 这样的工具(警告,我隶属于这家公司/产品),可以以任何你想要的方式预处理 PDF 文件。
一般来说,尽管我认为第一个问题是为什么要通过 RGB 到 CMYK 步骤 - 可以进行这种重新映射的工具同样能够简单地从黑色和红色 RGB 直接转到两个命名的专色,避免不必要的 CMYK 转换。
顺便说一句,如果您想要获得的是一个 PDF,您可以在其中轻松关闭一种颜色(例如隐藏正确答案),那么可能有更好的方法来做到这一点。例如将所有红色文本放在一个图层上,而将所有黑色文本放在不同的图层上(或 OCG - PDF 调用它们的可选内容组)。这将使您能够随意打开或关闭彩色文本,即使在 Adobe Reader 之类的东西中也是如此。
这是一个简单的实现,它将打印纯黑色或任何非黑色的东西。根据您的需要,它可能需要变得更复杂。在不了解更多信息的情况下,我采用了使用 exitserver 的蛮力方法。exitserver 允许重新定义 RIP 的默认操作。要将 RIP 恢复到正常操作,您需要重新启动 rip 或编写另一个出口服务器例程来取消定义服务器修改。
该例程通过发送 exitserver postscript 代码安装在 rip 中。对于 PC,这可以通过向打印机共享的 DOS 复制命令来完成。还有可以在网上找到的 sendps 程序将文件发送到设备。
copy redef1.ps \\127.0.0.1\psprinter
这个 exitserver 例程在 userdict 中定义了一个 /setcmykcolor 函数,它将优先于系统 dict 中的 setcmykcolor。堆栈上有 4 个数字,最后一个是黑色的。返回值被复制并与零进行比较。如果黑色不为零,则将执行黑色块,否则将执行非黑色块。0 setgray=black 和 1 setgray=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
通过反转 setgray 的值,黑色将不会打印,而其他所有“非黑色”都会打印。
%!
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
您从哪个程序打印无关紧要。无论最后加载哪个版本的 exitserver,都将是输出打印的方式。
这是一个简单的 .ps 示例
%!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
输出将仅显示“黑色”或“非黑色”,但文本会叠印,因此您将看到未打印的任何一种颜色的重影图像。
这是一个退出服务器,用于恢复 RIP 以使用正常的 setcmykcolor
%!
serverdict begin 0 exitserver
userdict /setcmykcolor undef
如开头所述,这是一个简单的实现,例如允许使用黑色而不是黑色。还可能有多种颜色,其中少量的黑色与颜色混合可以使简单的例程蒙骗到深红色 0 .87 。 75 .1 setcmykcolor 将被定义为黑色,它可能不应该是黑色。