PNG图像未显示为PDF格式

时间:2013-12-19 06:59:26

标签: pdf-generation png fpdf

我正确编码了我的PNG图像。它是灰度,8位。图像为5100(宽)x 6600(高)。 MediaBox是5100.0 6600.0。

图像:

3 0 obj
<<
/ProcSet [/PDF /ImageB]
/XObject <<
/Im8 8 0 R
>>
>>
endobj


8 0 obj
<<
/Type /XObject
/Subtype /Image
/BitsPerComponent 8
/ColorSpace /DeviceGray
/Height 6600
/Width 5100
/Filter /FlateDecode
/Length 590065
>>
stream
....zlib compressed stream

图片转换:

9 0 obj
<</Length 54>>
stream
q
5100 0 0 6600 0 0 cm
/Im8 Do
Q
endstream
endobj

页:

10 0 obj
<<
/Type /Page
/Parent 2 0 R
/CropBox [0.0 0.0 5100.0 6600.0]
/MediaBox [0.0 0.0 5100.0 6600.0]
/Resources 3 0 R
/Contents [  ]
>>
endobj

图像未显示。我逐个像素地验证了。

该流总共包含33666600(5100x6600 + 6600)个字节。其中6600表示使用的预测变量。就我而言,它是/ Predictor 13.

我写了这些33666600字节,即只压缩IDAT。

也许坐标? 压缩? 我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

如果您检查ISO-32000-1(PDF标准),您会发现PDF不支持PNG。您正在使用/FlateDecode过滤器,这意味着您告诉PDF查看器图像作为压缩位图存储在PDF文件中。如果存储压缩的PNG,PDF查看器将不知道如何呈现它。 (更新:您最近的更新表明您将图像存储为位图。)

另外:在您的页面词典(对象10)中,您将页面的/Contents存储为PDF数组,但该数组为空。它应该是[ 9 0 R ]

在您的代码示例中,您也忘记了复制/粘贴endstream关键字。

答案 1 :(得分:0)

以防万一:尝试从HTML创建pdf时,我遇到了类似的问题。所包含的png图像未呈现为pdf(应该在该图像所在的位置出现了一个小方块)。 在我的情况下,解决方案是创建已检查隔行扫描选项的png(我们使用photoshop)。