PDF能否基于设备颜色功能渲染两个不同对象中的一个?

PDF能否基于设备颜色功能渲染两个不同对象中的一个?,pdf,postscript,Pdf,Postscript,我们有一个机构标志,一个颜色设计,和一个不同的设计为双层(B&W)渲染。我将这两种设计组合到一个封装的PostScript(EPS)文件中,以便在渲染时根据设备的颜色功能选择适当的设计 不幸的是,当图形转换为PDF时,此功能无法传输。是否可以创建一个PDF文档,在全彩设备上打印时可以显示徽标的彩色版本,在黑白打印机上打印时可以使用适当的双层徽标?(我们的通信部门坚持我们的标志不应该是灰色的。) 我花了一个周末阅读PDF参考,但我找不到一种方法来测试文档中的渲染设备功能,或者有条件地执行一组绘图原

我们有一个机构标志,一个颜色设计,和一个不同的设计为双层(B&W)渲染。我将这两种设计组合到一个封装的PostScript(EPS)文件中,以便在渲染时根据设备的颜色功能选择适当的设计

不幸的是,当图形转换为PDF时,此功能无法传输。是否可以创建一个PDF文档,在全彩设备上打印时可以显示徽标的彩色版本,在黑白打印机上打印时可以使用适当的双层徽标?(我们的通信部门坚持我们的标志不应该是灰色的。)

我花了一个周末阅读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格式的等效文件。

我不知道有任何经验证的解决方案可以解决您的问题,但您可能希望尝试使用

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

您可能对API中的以下结构感兴趣:

  • Doc/WillPrint
    事件
  • PrintParams
    对象
  • 注释
    对象
  • OCG
    及其属性
您可以使用Acrobat Professional和许多第三方工具和库将Javascript嵌入到PDF中

请注意,除了AdobeReader之外,几乎没有PDF查看器支持完整的JavaScript API

编辑:

另一种可能是将Postscript直接嵌入到PDF中。有一些PostScript XObject用于此


不幸的是,大多数查看器可能不支持或不完全支持此类对象。Adobe Community forum有一个主题。

这些都是有用的指针,但JavaScript主要添加了与Adobe Acrobat产品系列的文档交互。我认为这个功能不会暴露给打印机(或许多其他非Acrobat渲染器)。@BretWhissel你是对的,它只会在Adobe产品中工作,如果有的话。主要场景是:检测文档即将打印的时间,检查当前打印参数并相应地替换图像。附加信息回答了问题:很可能无法在PDF文档中实现我所希望的,并且违反了PDF的设计精神和意图。