2017-04-12 50 views
0

我想讀取一個XRef流對象,但不加起來。這是我的對象:不匹配的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字節。這是未壓縮流的開始處(進制打印-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不是有效的入口類型)。 我的錯誤在哪裏?

非常感謝您的幫助。

回答

0

解壓縮後,每行有6個字節:1個字節用於預測,5個用於'預測'數據。
應用預測器後,您將獲得實際數據。

+0

非常感謝! – Claudio