如何将具有透明度的PNG添加到PDF?

Pen*_*hia 5 pdf png pdf-generation

我需要为PDF添加一个透明的PNG,但老实说,我有点迷茫.

我是否需要获取PNG的tRNS块并添加到我的SMask中?当PNG没有tRNS块时该怎么办?

我知道已经存在这个问题,但它没有答案,我不理解投票最多的问题.

任何帮助将不胜感激!

编辑:

我试图首先掩盖一种颜色,我将图像的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
Run Code Online (Sandbox Code Playgroud)

但它没有在Adobe中打开,它显示消息"图像数据不足",而Foxit则显示图像"扭曲"并且颜色错误.

我正在使用这个图像,这是我的PDF.

我只想掩盖一种颜色,然后使用FreeImage获得该颜色.

PS:我不知道我是应该创建一个新问题还是更新这个问题,对不起,如果这是错误的协议.

Jos*_*phA 1

通常,当图像流不包含足够的数据时,Acrobat 会显示该错误。根据图像尺寸、位深度和色彩空间表示,您应该能够计算出需要多少,如果您在流中提供的内容少于您会看到这样的错误。

我认为问题在于 PNG 是索引颜色,因此每个像素都包含调色板的索引。您将 /ColorSpace 指定为 DeviceRGB,其中 BPC 为 8,即每像素 24 位,您应该使用 /Indexed 颜色空间,其基本颜色空间为 DeviceRGB。

我相信您正确指定了蒙版,但是我会先不用担心蒙版,只是为了确保您在 PDF 查看器中打开基本图像时能够首先获得正确的基本图像。