将(任意)PDF转换为黑色(K)-仅限CMYK



这与有关

  • 将PDF转换为CMYK(带有识别CMYK的标识)
  • 用脚本(或其他方式)将RGB转换为PDF格式的CMYK

但这里更具体一点:假设我有一个RGB PDF,其中文本颜色是"浓黑色"(R:0 G:0 B:0变为C:100 M:100 Y:100 K:100),以及各种图像和矢量图形。

我想使用一个免费的命令行工具将其转换为CMYK PDF(因此它可以在Linux下批量编写脚本),

  • 在黑色(K)通道中只有内容:
    • 保留矢量图形(+文本字形)-颜色仅在黑色(K)通道中变为灰度
    • 图像仅转换为黑色(K)通道中的灰度

提前感谢您的回答,
干杯

正如我对@Mark Storer的评论中所暗示的,事实证明,只在CMYK的K版上强制打印灰色可能并不那么微不足道。。。我想这在很大程度上取决于什么被用作"预打印"预览设备——对于Linux,我唯一能找到的是ghostscripttiffsep,这就是我用于CMYK分离的"健全性检查"。

无论如何,我在comp.lang.postscript:上的这个线程中得到了很多帮助

  • PDF到PDF(gs?):浓RGB黑色到纯K(CMYK)黑色?-comp.lang.postscript |谷歌群组

一个对我有效的工作流程是:

  • 使用ghostscriptps2write将PDF转换为PS
  • 使用ghostscript将此PS转换回PDF,同时在HackRGB-cmyk-inv.PS中执行替换功能
  • 使用ghostscripttiffsep检查实际分离

 

比如说,关于这个由OpenOffice:blah-slide.PDF生成的PDF,命令行是:

# PDF to PS using `ps2write` device of `ghostscript`
gs 
   -dNOPAUSE 
   -dBATCH 
   -sDEVICE=ps2write 
   -sOutputFile=./blah-slide-gsps2w.ps 
    ./blah-slide.pdf 
# PS to PDF using replacement function in HackRGB-cmyk-inv.ps
gs 
   -dNOPAUSE 
   -dBATCH 
   -sDEVICE=pdfwrite 
   -sOutputFile=./blah-slide-hackRGB-cmyk-inv.pdf 
    ./HackRGB-cmyk-inv.ps 
    ./blah-slide-gsps2w.ps
# check separations
gs 
   -dNOPAUSE 
   -dBATCH 
   -dSAFER 
   -sDEVICE=tiffsep 
   -dFirstPage=1 
   -dLastPage=1 
   -sOutputFile=p%02d.tif 
    blah-slide-hackRGB-cmyk-inv.pdf 

&& eog p01.tif 2>/dev/null 

这应该只适用于R=G=B的RGB值(希望是灰度值),也只适用于文本颜色,而且它还可以使文本信息变平-但应该可以通过tiffsep确认文本确实只出现在K板上。

正如新闻组帖子中提到的,这还没有经过广泛的测试,但到目前为止看起来很有希望
干杯

作为对sdau出色答案的改进,我建议使用xpdf中的pdftops将pdf转换为ps,而不是ghostscript ps2write,因为后者会导致字体变为staircasey,据说无法准确保存原始pdf。通过放大生成的PDF的文本区域进行比较。

我建议您使用GS转换PDF两次。一次到灰度颜色空间,然后到CMYK。

我不确定它会起作用,但如果它不起作用,我会有点惊讶。G->CMYK听起来像是脑死亡的X -> 0 0 0 X转换。至少如果你坚持使用"设备灰度"one_answers"设备CMYK",而不是一些校准的颜色空间,这会对事情进行这样那样的调整。

最新更新