gpt4 book ai didi

PDF 交叉引用流

转载 作者:行者123 更新时间:2023-12-03 03:27:14 25 4
gpt4 key购买 nike

我正在开发一个 PDF 解析器/编写器,但我一直在生成交叉引用流。我的程序读取 this文件,然后删除其线性化,并解压缩对象流中的所有对象。最后它构建 PDF 文件并保存它。

当我使用普通的交叉引用和预告片时,这非常有效,正如您在 this 中看到的那样文件。

当我尝试生成交叉引用流对象时(这会生成 this 文件,Adobe Reader 无法查看它。

有没有人有使用 PDF 的经验,可以帮助我查找问题所在?

请注意,交叉引用是文件 2 和文件 3 之间的唯一区别。前 34127 个字节是相同的。

如果有人需要解码引用流的内容,请下载this文件并在十六进制编辑器中打开它。我反复检查了这张引用表,但没有发现任何错误。不过字典好像也不错。

非常感谢您的帮助!!!

更新

现在我已经完全解决了这个问题。您可以找到新的 PDF here .

最佳答案

我看到的两个问题(没有查看流数据本身。

  1. "Size 整数(必需)比本节或应更新的任何节中使用的最高对象编号大 1 的数字。它应等于预告片字典中的尺寸条目。”

    你的尺码应该是... 14。

  2. 索引数组(可选)包含本节中每个小节的一对整数的数组。第一个整数应是小节中的第一个对象编号;第二个整数应是是该小节中的条目数该数组应按对象编号升序排序。小节不能重叠;一个对象编号在一个部分中最多可以有一个条目。默认值:[0 大小]。”

    您的索引可能应该稍微跳过一下。您没有对象 2-4 或 7。索引数组需要反射(reflect)这一点。

  3. 你的数据也不正确(我刚刚学会了读取外部参照流。耶。)

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 中的偏移量完全不同,甚至允许十进制-十六进制混淆)。

你想要的可以在 resultNormal 的外部参照中找到:

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 规范规定大小必须既是此外部参照以及所有先前外部参照中的条目数,又是比使用的最高对象数大 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

关于PDF 交叉引用流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com