PDF可以根据设备颜色功能渲染2个不同对象中的一个吗?

时间:2014-02-24 14:45:53

标签: pdf postscript

我们有一个机构标识,一种颜色设计,以及双层(B& W)渲染的不同设计。我将这两个设计合并为一个Encapsulated PostScript(EPS)文件,以便在渲染时选择正确的设计,具体取决于设备的颜色功能。

不幸的是,当图形转换为PDF时,此功能不会传输。是否可以创建单个PDF文档,在全彩设备上打印时可以显示徽标的颜色版本,并在B& W打印机上打印时使用正确的双层徽标? (我们的传播部门坚持认为我们的徽标不应该是灰度的。)

我花了整个周末阅读PDF参考资料,但我找不到从文档中测试渲染设备功能的方法,或者有条件地执行绘图原语集。我错过了什么吗?

附录:

实现此目的的PostScript代码如下所示:

systemdict /currentpagedevice known       % PostScript Level 2 test
    { currentpagedevice 
      /ProcessColorModel get 
      /DeviceGray ne     % pushes TRUE on stack if color
    }
    { systemdict /processcolors known }   % PostScript Level 1 punt
  ifelse
    { color_logo }                        % True: Draw full-color design
    { bilevel_logo }                      % False: Draw B&W design
  ifelse

如果可能的话,我正在寻找PDF等价物。

1 个答案:

答案 0 :(得分:1)

我不知道您的问题有任何经过验证的解决方案,但您可能想尝试使用JavaScript™ for Acrobat® API

使用JavaScript,可以在打印文档之前更改按钮的背景图像。或者更改可选内容组的可见性。

API中的以下结构可能对您有用:

  • Doc/WillPrint活动
  • PrintParams object
  • Annotation object
  • OCG及其属性

您可以使用Acrobat Professional和许多第三方工具和库将Javascript嵌入到PDF中。

请注意,除了Adobe Reader之外,很可能没有PDF查看器支持完整的JavaScript API。

修改

另一种可能性是将Postscript直接嵌入到PDF中。有PostScript XObjects。

不幸的是,大多数观看者可能不支持或不完全支持此类对象。 Adobe社区论坛有一个关于embedding of Postscript in PDF的帖子。