【发布时间】:2014-12-03 09:28:09
【问题描述】:
背景
根据pdf standard,一个更新的文件可以包含不同的版本。如果你看一下 7.5.6 中的图 3,你会看到有一个原始正文 + 元数据(预告片,交叉引用部分)和多个更新。
问题
是否有任何库可以提取这些修订? poppler 有可能吗(我在大部分工作中都使用 poppler)?
提供修订数量并允许提取它们的 Api 会很好。
如果我正确理解标准,这只是剪切更新部分并在文件末尾添加更新的startxref 的问题。
注意
虽然这似乎很容易让我自己实现,但我更愿意在自己编写之前重用现有的东西。
@CloseVotes:虽然我可以将这个问题表述为How to extract PDF revisions with Poppler,但我想保持它的广泛性,因为我更喜欢使用额外的库而不是破解我自己的库。
【问题讨论】:
-
A 修订之间的转换并不总是像人们希望的那样清晰,参见。 this answer的Some backgrounds first部分,特别是关于“中间形式”和“一些不精确”的评论。 B 正如该答案中所解释的,可以准确识别已签名的修订。要提取它们,您只需要检查带符号的字节范围条目并相应地剪切原始文件
-
@mkl 那篇文章很有帮助,因为我从那里收集到下面的答案,最好使用我自己的工具进行提取。
-
推出我自己的工具 - 这样做时,请注意存在一些陷阱,其中一些在上面引用的答案中指出,但有些也与线性化和混合 PDF。
-
@mkl 你介意让我了解混合 pdf 吗?我还看了附录 F 中的线性化,感觉它对我来说是无趣的。如果我理解正确,线性化文档没有增量更新,因此我可以返回它。如果我有一个具有线性化“原始”正文和更新的文档,我可以逐个版本修剪,直到我(poppler)检测到它看到的是线性化文档。这种对线性化的理解足够/正确吗?
-
如果我理解正确,线性化文档没有增量更新,因此我可以返回它 - 它没有,但它的构造类似于具有一次增量更新的文档。如果你一看到正确的线性化 PDF 就停下来,应该没问题。