不匹配的XRef流条目大小

时间:2017-04-12 10:53:20

标签: pdf stream cross-reference

我正在尝试读取XRef流对象,但有些东西没有加起来。这是我的目标:

<<
/DecodeParms << /Columns 5/Predictor 12 >>
/Filter /FlateDecode
/ID [<9597C618BC90AFA4A078CA72B2DD061C><48726007F483D547A8BEFF6E9CDA072F>]
/Index [124332 848]
/Info 124331 0 R
/Length 137
/Prev 8983958
/Root 124333 0 R
/Size 125180
/Type /XRef
/W [1 3 1]
>>

我读取了137个字节的流,通过zlib解压缩它们,得到5088字节。这是未压缩流的开始(hexdump -C输出):

00000000  02 01 00 00 10 00 02 00  00 27 ec 00 02 00 00 01  |.........'......|
00000010  f4 00 02 00 00 01 f7 00  02 00 00 04 5b 00 02 00  |............[...|
00000020  00 02 68 00 02 00 00 0b  ac 00 02 00 00 0f e5 00  |..h.............|
00000030  02 00 00 0e 93 00 02 00  00 0d 14 00 02 00 00 0d  |................|

我不明白的是每个条目应该有5个字节:/ W [1 3 1]表示1 + 3 + 1 = 5个字节;但是流的长度5088不能被5整除。另外,我意识到5088可以被6:5088/6 = 848整除,这是/ Index键的第二个值确认的条目数。在第二个条目处读取保持[1 3 1]方案的流也是不可能的(字节0xEC不是有效的条目类型)。 哪里是我的错?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

解压缩后,每行有6个字节:1个字节用于预测器,5个用于“预测”数据。
应用预测变量后,您将获得实际数据。