将页面级透明度混合颜色空间设置为设备RGB

时间:2019-02-13 03:54:29

标签: pdf pdf-generation pdfbox acrobat

我的要求是将页面级透明度混合颜色空间设置为设备RGB。我正在尝试使用pdfBox实现此目的。 屏幕截图来自Adobe Acrobat Reader(打印产品->展平预览器->更改页面级透明颜色空间),您可以在下拉菜单中设置该值。

我尝试使用PDFBOX的PDGraphicState设置混合模式。是实现截图中显示的页面级透明性的正确方法吗?

PDGraphicsState gState = new PDGraphicsState(page.getArtBox());
gState.setBlendMode(BlendMode.OVERLAY);
PDExtendedGraphicsState pde = new PDExtendedGraphicsState();
pde.copyIntoGraphicsState(gState);
final COSName blendMode =page.getResources().add(pde);

但这不起作用。 我还有其他一些使用“ PDExtendedGraphicState”的代码

,将使用page.getResources()。add(graphicsState)添加到页面 但是PDExtendedGraphicState没有设置setBlend模式的任何方法。 因此,我创建了新的PDExtendedGraphicState对象,并执行了“ copyIntoGraphicsState”。

我错过了什么还是方法错误吗?

谢谢。

编辑
之前 在Adobe acrobat Pro DC中打开文件。打开:工具->打印生产->输出预览。尝试打开和关闭输出预览。您会看到颜色偏移。 Before

之后 在Acrobat Pro DC中打开相同的文件(Before.pdf)。打开:工具->打印生产->展平预览->查找页面级透明度混合色彩空间(请参见屏幕截图)->更改->从下拉列表中选择设备RGB->应用。现在您将获得我在此处添加的after.pdf。 此后,如果您如上所述打开输出预览,将不会看到颜色偏移。
After

2 个答案:

答案 0 :(得分:0)

我认为,部分问题是存在混合模式(正常,加深,乘法,颜色加深等),然后是页面级透明混合颜色空间(DeviceRGB或DeviceCMYK)。后者可以在InDesign中设置(有一个菜单项),但是这里需要使用PDFBox或其他工具设置此参数。因此,它不是套印或混合模式,而是设置了色彩空间(在要修改的OP的PDF中设置为“无”)。

在我的测试中,如果将此设置设置为“无”,则两个RGB对象之间的透明度混合将无法正常工作,如果将其设置为“ DeviceRGB”或适当的RGB色彩空间且未更改套印或混合,则该混合将正确运行模式。

看来Enfocus PitStop Pro和Callas pdfToolbox都可以设置此参数,但是如果PDFBox也可以设置此参数,将很有用。

答案 1 :(得分:0)

要将DeviceRGB设置为文档的透明混合色空间。我们使用了:

group.setItem(COSName.S, COSName.TRANSPARENCY);
group.setItem(COSName.CS, COSName.DEVICERGB);
page.getCOSObject().setItem(COSName.GROUP, group)

这解决了问题。 谢谢你们提出了不同的方法。