pdf文件中的XREF表

时间:2019-03-29 15:36:25

标签: pdf iso-32000

我为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。这些数字是如何计算的?

1 个答案:

答案 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个字节。