【发布时间】:2018-07-15 16:41:09
【问题描述】:
我需要在 PDF 中添加具有透明度的 PNG,但老实说,我有点迷路了。
我是否需要获取 PNG 的 tRNS 块并添加到我的 SMask 中?当 PNG 没有 tRNS 块时该怎么办?
我知道已经存在 this 问题,但它没有答案,我不明白投票最多的问题。
任何帮助将不胜感激!
编辑:
我正在尝试首先屏蔽一种颜色,我将图像的 IDAT 块添加到我的流中,并在 /Mask 标签上使用蒙版颜色:
6 0 obj
<<
/Type /XObject
/Subtype /Image
/Name /Im1
/Width 60
/Height 23
/BitsPerComponent 8
/Length 484
/ColorSpace /DeviceRGB
/Filter /FlateDecode
/Mask [0 0 0 0 0 0]
>>
stream
% IDAT CHUNK %
endstream
endobj
但它在 Adobe 中打不开,显示消息“图像数据不足”,而在 Foxit 上显示图像“扭曲”且颜色错误。
我正在使用this image 和this is my PDF。
我只想屏蔽一种颜色,我使用 FreeImage 获得了该颜色。
PS:我不知道是否应该创建一个新问题或更新这个问题,如果这是错误的协议,很抱歉。
【问题讨论】:
-
共有三个PNG transparency types,由 PNG IHDR 块中的颜色类型字段确定。您引用的答案仅涵盖映射到索引颜色空间的调色板颜色(颜色类型 3)。还有 (4) Gray-Alpha 和 (6) RGB-Alpha。
-
再看这个问题。 (1) 你需要一个
DecodeParams条目来陪伴/Filter /FlateDecode在这种情况下,我认为/DecodeParms << /Columns 60 /Predictor 15 >>。 (2) 这在您的示例 PDF/Length 484中看起来不对,但流有 330 个字节?
标签: pdf pdf-generation png