PDF 内联图像不起作用
PDF inline Image does not work
我在 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
...
当我没有使用图像属性的缩写时,已经有一个空白页面。
有谁知道可能是什么问题?
感谢您的提示和帮助!
好吧,这两天把规范看了一遍又一遍。但这是值得的。
有两个错误。只有他们两个的更正给了我想要的结果...
首先我没有结束ID和ED之间的ASCIIHexDecodeFilter部分。规范说:"A right angle bracket character (>) indicates EOD." 如果有使用 ASCIIHexDecodeFilter 过滤的完整流,Adobe Reader 通过读取 /Length 属性知道流的结尾。但作为流本身的一部分,它需要 > 字符。
第二件事是我的页面对象 (3 0 obj) 需要强制性的 /Resources 属性。可以是空的(/Resources << >>),但可以不缺。
感谢所有试图回答或帮助的人!!
这里是正确的内联图像 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
我在 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
...
当我没有使用图像属性的缩写时,已经有一个空白页面。
有谁知道可能是什么问题?
感谢您的提示和帮助!
好吧,这两天把规范看了一遍又一遍。但这是值得的。
有两个错误。只有他们两个的更正给了我想要的结果...
首先我没有结束ID和ED之间的ASCIIHexDecodeFilter部分。规范说:"A right angle bracket character (>) indicates EOD." 如果有使用 ASCIIHexDecodeFilter 过滤的完整流,Adobe Reader 通过读取 /Length 属性知道流的结尾。但作为流本身的一部分,它需要 > 字符。
第二件事是我的页面对象 (3 0 obj) 需要强制性的 /Resources 属性。可以是空的(/Resources << >>),但可以不缺。
感谢所有试图回答或帮助的人!!
这里是正确的内联图像 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