我为pdf文件编写了以下Hello代码。
%PDF-1.4
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Parent 2 0 R /Contents 4 0 R >>
endobj
4 0 obj
<< /Length 20 >>
stream
BT
/F1 40 Tf
100 600 Td
(Hello!) Tj
ET
endstream
endobj
trailer
<< /Root 1 0 R
/Size 3
>>
%%EOF
我想知道xref
表是如何计算的?\
在第三条评论之后更新:
我可以编写如下表格吗?
xref
0 3
0000000000 65536 f
0000000001 00000 n
0000000002 00000 n
0000000003 00000 n
这有什么问题(如果有的话)?
此page中的示例显示外部参照中的对象之间存在差异(大于1)。但是,尚不清楚为什么第一个对象的偏移量为15,而第二个对象的偏移量为87。这些数字是如何计算的?
答案 0 :(得分:0)
问题编辑后,问题变得很明显,您不知道测量偏移量的单位。
外部参照表中的 n 条目描述为
使用中条目的格式应为:
nnnnnnnnnn ggggg n eol
其中:
nnnnnnnnnn 在解码后的流中应为10位字节的偏移量
ggggg 应该是5位数的世代号
n 是将其标识为使用中条目的关键字
eol 应该是2个字符的行尾序列
“解码流中的10位字节偏移”可能不清楚。幸运的是,上面的文字后面立即有一个解释:
解码后的流中的字节偏移应为10位数字,并在必要时用前导零填充,以给出从文件开头到对象开头的字节数。
(ISO 32000-1,第7.5.4节“交叉引用表”)
因此,这里的 offset 实际上只是在PDF中对象开始的字节位置,即对象和世代号。
顺便说一句,您必须严格遵守的一项内容是此类条目的长度:
条目的总长度应始终正好为20个字节。