PDF内嵌图像不起作用

时间:2015-10-20 18:16:15

标签: image pdf inline

我在pdf流中定义了一个图像。它正常工作,向我显示一个红色的4像素调色板:

%PDF-1.7
1 0 obj
<<
  /Type     /Catalog
  /Pages    2 0 R
  /PageMode /UseNone
>>
endobj
2 0 obj
<<
  /Type  /Pages
  /Count 1
  /Kids  [3 0 R]
>>
endobj
3 0 obj
<<
  /Type      /Page
  /Parent    2 0 R
  /MediaBox  [0 0 50 20]
  /Contents  4 0 R
  /Resources
  <<
    /XObject << /Im1 5 0 R >>
  >>
>>
endobj
4 0 obj
<<
  /Length 38
>>
stream
  40 0 0 10 5 5 cm
  /Im1          Do
endstream
endobj
5 0 obj
<<
  /Type             /XObject
  /Subtype          /Image
  /Width            4
  /Height           1
  /ColorSpace       /DeviceRGB
  /BitsPerComponent 2
  /Filter           /ASCIIHexDecode
  /Length 10
>>
stream
 01 08 30
endstream
endobj
xref
0 6
0000000000 65535 f 
0000000009 00000 n 
0000000090 00000 n 
0000000155 00000 n 
0000000311 00000 n 
0000000400 00000 n 
trailer
<<
  /Size 6
  /Root 1 0 R
>>
startxref
720
%%EOF

但是当我尝试显示与内嵌图像相同的图像时,只有一个空白页面:

...
...same as above...
...
3 0 obj
<<
  /Type      /Page
  /Parent    2 0 R
  /MediaBox  [0 0 50 20]
  /Contents  4 0 R
>>
endobj
4 0 obj
<<
  /Length 92
>>
stream
 40 0 0 10 5 5 cm
 BI
  /W   4
  /H   1
  /CS  /RGB
  /BPC 2
  /F   /AHx
 ID
  01 08 30
 EI
endstream
endobj
...

当我没有使用图像属性的缩写时,已经有一个空白页面。

有没有人知道可能出现什么问题?

感谢您的任何提示和帮助!

1 个答案:

答案 0 :(得分:1)

好的,过去两天我一次又一次地阅读规范。但这是值得的。

有两个错误。只有纠正他们两个给了我想要的结果......

首先,我没有结束ID和ED之间的ASCIIHexDecodeFilter部分。规范说:&#34;直角括号字符(&gt;)表示EOD。&#34;如果存在使用ASCIIHexDecodeFilter过滤的完整流,则Adobe Reader通过读取/ Length属性来了解流的结尾。但作为流本身的一部分,它需要&gt;字符。

第二件事是我的页面对象(3 0 obj)需要/ Resources属性是必需的。它可能是空的(/ Resources&lt;&lt;&gt;&gt;)但可能不会丢失。

感谢所有试图回答或帮助的人!

这里是正确的工作内联图片PDF文件流:

%PDF-1.7
1 0 obj
<<
  /Type     /Catalog
  /Pages    2 0 R
  /PageMode /UseNone
>>
endobj
2 0 obj
<<
  /Type  /Pages
  /Count 1
  /Kids  [3 0 R]
>>
endobj
3 0 obj
<<
  /Type      /Page
  /Parent    2 0 R
  /MediaBox  [0 0 50 20]
  /Contents  4 0 R
  /Resources << >>
>>
endobj
4 0 obj
<<
  /Length 90
>>
stream
q
 40 0 0 10 5 5 cm
 BI
  /W 4
  /H 1
  /CS/RGB
  /BPC 2
  /F /AHx
 ID
  01 08 30 >
 EI
Q
endstream
endobj
xref
0 5
0000000000 65535 f 
0000000009 00000 n 
0000000090 00000 n 
0000000155 00000 n 
0000000277 00000 n 
trailer
<<
  /Size 5
  /Root 1 0 R
>>
startxref
418
%%EOF