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

时间:2018-02-05 18:25:46

标签: pdf pdf-generation png

我需要为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中打开,它显示了消息&#34;图像数据不足&#34;并且在Foxit上显示了图像&#34; twisted&#34;而且颜色错了。

我正在使用this imagethis is my PDF

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

PS:我不知道是否应该创建新问题或更新此问题,对不起,如果这是错误的协议。

1 个答案:

答案 0 :(得分:1)

通常,当图像流不包含足够的数据时,Acrobat会显示该错误。根据图像尺寸,位深和色彩空间表示,您应该能够计算出所需的量,并且流中提供的内容是否少于看到的错误。

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

我相信您正确地指定了遮罩,但是,例如,要确保在PDF查看器中打开基础图像时,首先要确保可以正确获取基础图像,所以我将无需担心遮罩。