如何在PDF中插入透明PNG?

Goo*_*bot 11 pdf adobe png image imagemagick

我可以使用DCTDecode过滤器将JPG图像插入到PDF文档中.我认为图像的所有参数也应该相同PNG,除了应该是的过滤器FlateDecode.但是,当我尝试PNG使用相同的参数插入时,PNG图像在PDF文档中不可见.

更新:我得出结论,PDF文件应该包括

1 0 obj <<
/Type /XObject
/Subtype /Image
/Width 512
/Height 512
/BitsPerComponent 8
/ColorSpace /DeviceRGB
/SMask 9 0 R
/Length 134753    
/Filter /FlateDecode
>>
stream
PNG_RAW DATA
endstream
endobj
9 0 obj <<
/Type /XObject
/Subtype /Image
/Width 512
/Height 512
/BitsPerComponent 8
/ColorSpace /DeviceGray
/Length 12087     
/Filter /FlateDecode
>>
stream
ALPHA_PIXELS
endstream
endobj
Run Code Online (Sandbox Code Playgroud)

但是我如何分离PNG原始数据和alpha pixels通道ImageMagick?换句话说,什么ImageMagick命令可以生成PDF_RAW_DATAALPHA_PIXELS插入到pdf文件中.

zfr*_*zfr 6

@Bobrovsky

这是一个例子:http://pd4ml.com/i/pd4ml18130.pdf

更准确一点:你绝对不能嵌入PNG而不用它进行操作.您需要将PNG拆分为多个部分:IDAT(图像数据)转换为PDF,字节流不变,PLTE(调色板) - 颜色空间定义,iCCP可选择转到颜色配置文件对象.

对象字典可能如下所示:

<<
/Filter /FlateDecode
/Type /XObject
/Subtype /Image
/BitsPerComponent 8
/Length 1277
/Height 250
/Width 250
/DecodeParms <<
    /BitsPerComponent 8
    /Predictor 15
    /Columns 250
    /Colors 1
>>
/ColorSpace [/Indexed /DeviceRGB 1 <1989d1ffffff>]
>>
stream
... IDAT bytes ...
Run Code Online (Sandbox Code Playgroud)


Bob*_*sky 4

很可能您没有解码 PNG 图像。

PDF 不直接支持 PNG。我的意思是它们不支持 JPEG 的方式。

在将 PNG 嵌入 PDF 之前,您必须从 PNG 生成原始未压缩的光栅字节。如果您愿意,您可以使用 Flate 或 LZW 编码器对光栅字节进行编码。

  • PDF 直接支持 PNG,但存在一些限制。PNG 应该是 PNG8(颜色类型 3),最多有 256 种颜色,没有透明蒙版(Alpha 通道),不是隔行扫描。 (2认同)