私が見る2つの問題(ストリームデータ自体を見ずに.
「サイズ 整数 (必須) このセクションまたはこれが更新されるセクションで使用される最大のオブジェクト番号よりも 1 大きい数値。これは、トレーラー ディクショナリのサイズ エントリに相当するものとします。」
あなたのサイズは... 14.
"インデックス配列 (オプション) このセクションの各サブセクションの整数のペアを含む配列。最初の整数はサブセクションの最初のオブジェクト番号、2 番目の整数はサブセクションのエントリ数、配列はソートされます。オブジェクト番号の昇順です。サブセクションは重複できません。オブジェクト番号は、セクション内に最大 1 つのエントリを持つことができます。デフォルト値: [0 サイズ]."
インデックスはおそらく少しスキップする必要があります。オブジェクト 2 ~ 4 または 7 はありません。インデックス配列はそれを反映する必要があります。
あなたのデータも正しくありません (そして、私はちょうど xref ストリームを読むことを学びました.
00 00 00
01 00 0a
01 00 47
01 01 01
01 01 70
01 02 fd
01 76 f1
01 84 6b
01 84 a1
01 85 4f
このデータによると、「インデックスなし」のためにオブジェクト番号0〜9として解釈され、次のオフセットがあります。
0 is unused. Fine.
1 is at 0x0a. Yep, sure is
2 is at 0x47. Nope. That lands near the beginning of "1 0"'s stream. This probably isn't a coincidence.
3 is at 0x101. Nope. 0x101 is still within "1 0"'s stream.
4 is at 0x170. Ditto
5 is at 0x2fd. Ditto
6 is at 0x76f1. Nope, and this time buried inside that image's stream.
私はあなたがアイデアを得ると思います。したがって、正しい \Index を持っていたとしても、オフセットはすべて間違っています (そして、resultNormal.pdf の内容とは完全に異なり、10 進数と 16 進数の混乱を許すことさえあります)。
必要なものは、resultNormal の xref にあります。
xref
0 2
0000000000 65535 f
0000000010 00000 n
5 2
0000003460 00000 n
0000003514 00000 n
8 5
0000003688 00000 n
0000003749 00000 n
0000003935 00000 n
0000004046 00000 n
0000004443 00000 n
したがって、インデックスは次のようになります (私がこれを正しく読んでいる場合): \Index[0 2 5 2 8 5]
。そしてデータ:
0 0 0
1 0 a
1 3460 (that's decimal)
1 3514 (ditto)
1 3688
etc
興味深いことに、PDF の仕様では、サイズは、この XRef と以前のすべての XRef のエントリ数と、使用中の最大オブジェクト数よりも 1 大きい数値の両方である必要があると規定されています。
後者の部分が強制されることはないと思いますが、外部参照ストリームが通常の相互参照テーブルよりも保持力が高いことに気付いても驚かないでしょう。両方を処理する同じコードかもしれませんが、そうでないかもしれません。
@mtraut:
ここに私が見るものがあります:
13 0 obj <</Size 10/Length 44/Filter /FlateDecode/DecodeParms <</Columns 3/Predictor 12>>/W [1 2 0]/Type /XRef/Root 8 0 R>>
stream
...
endstream
endobj