【问题标题】:Trying to annotate a PDF with XREF streams尝试使用 XREF 流注释 PDF
【发布时间】:2013-02-20 17:33:39
【问题描述】:
我有这个示例 PDF 文件:
Original file
我试图附加一个文本注释,结果如下:
Annotated file
但是,在 MAC OSX 上的预览仍然显示没有新注释的文档,Adobe Reader 甚至无法打开带注释的文档,说明:
打开此文档时出错。文件已损坏,无法修复。
到目前为止,我很幸运能够注释其他具有“经典 XREF 表”而不是编码的文件。
但是,编写我自己的编码 XREF 流似乎不起作用。
我很确定我的流没问题,但它仍然可能是我缺少的其他东西吗?
【问题讨论】:
标签:
pdf
pdf-generation
pdf-parsing
【解决方案1】:
我不知道你是用哪个软件添加注释的,但你应该把它扔掉,永远不要再使用它。为什么?因为它没有在预告片中添加 startxref 条目,因此违反了 ISO-32000-1。即使是具有压缩交叉引用表的文件也需要这样的条目。
阅读 ISO-32000-1 的第 7.5.8 节,标题为“交叉引用流”:
startxref关键字后面的值应该是交叉引用流的偏移量,而不是
外部参照关键字。对于完全使用交叉引用流的文件
(即不是混合参考文件的文件),关键字 xref 和预告片将不再是
用过的。因此,除了 startxref 地址、%%EOF 段和 cmets,一个文件可能完全是一个序列
对象。