【问题标题】:How to add a PNG with transparency to a PDF?如何将具有透明度的PNG添加到PDF?
【发布时间】: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

但它在 Adob​​e 中打不开,显示消息“图像数据不足”,而在 Foxit 上显示图像“扭曲”且颜色错误。

我正在使用this imagethis is my PDF

我只想屏蔽一种颜色,我使用 FreeImage 获得了该颜色。

PS:我不知道是否应该创建一个新问题或更新这个问题,如果这是错误的协议,很抱歉。

【问题讨论】:

  • 共有三个PNG transparency types,由 PNG IHDR 块中的颜色类型字段确定。您引用的答案仅涵盖映射到索引颜色空间的调色板颜色(颜色类型 3)。还有 (4) Gray-Alpha 和 (6) RGB-Alpha。
  • 再看这个问题。 (1) 你需要一个DecodeParams 条目来陪伴/Filter /FlateDecode 在这种情况下,我认为/DecodeParms &lt;&lt; /Columns 60 /Predictor 15 &gt;&gt;。 (2) 这在您的示例 PDF /Length 484 中看起来不对,但流有 330 个字节?

标签: pdf pdf-generation png


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2020-03-04
    • 2012-06-26
    • 2018-10-19
    • 2018-06-05
    相关资源
    最近更新 更多