我正在使用iText从Java生成多页PDF。问题:我的图表上的线条在某些页面之间移动颜色。
以下是页面之间转换的屏幕截图:
这是从Adobe Reader获取的。这些行是OS X Preview.app中的正确颜色。
在Reader中,顶部是#73C352,底部是#35FF69。在Preview.app中,该行是#00FE7E。
关于可能导致这种差异的任何想法?我从Preview.app中保存了PDF并在Adobe Reader中打开它,但仍然关闭了颜色。
Here is the PDF that is having trouble。在Adobe Reader中打开它,查看第11页和第11页之间的过渡。 12。
在进一步检查时,似乎java.awt.print.PrinterJob两次为每个pageIndex调用print()。这可能是一个线索。
答案 0 :(得分:4)
颜色较深的页面存在的问题是它们包含带有透明图像的图案对象。涉及透明度时,Adobe Acrobat会自动切换到自定义CMYK配置文件,这会导致颜色较深。只有Acrobat这样做,其他观众表现得很好。解决方案是使用透明图像移除图案对象(它似乎是PDF生成器引擎的绘图工件,它不在页面的任何位置使用),或者您可以使页面成为透明组的一部分并指定透明度组使用RGB色彩空间。
答案 1 :(得分:1)
有几种不同的可能性,是的。
不同的颜色匹配。如果您在一个页面上使用“校准”色彩空间而在另一个页面上使用“设备”色彩空间,则相同的RGB / CMYK值可以产生视觉上不同的值。
如果图形位于Form XObject中,则根据绘制表单时的当前图形状态,相同的图形可能会有所不同。
如果您可以发布PDF链接,我可能会给您一个具体的答案。
哎哟。那个PDF很难实现。我想跟谁写PDF转换器的人说些什么。苛刻的。很多不必要的剪辑(例如,第7页正在剪切“文本”),图像使用不当,但在实际帮助时不使用图案,将文本绘制为路径,以及依次...
编辑:这正是您通过PdfGraphics2D对象渲染Java UI时所看到的内容。您可以将文本保留为文本。这只是你如何创建PdfGraphics2D实例的问题。
好的,所以线条本身的颜色是相同的。 0 1 0.4 RG
。但是,有一些“透明度的东西”正在进行中。
在具有软掩码或扩展图形状态的图像更改透明度的页面上,绿线显得更暗。在没有的页面上,它看起来更亮。
我怀疑那些绘制线条的其他PDF查看器根本不支持透明度,或者只是支持不好。