为什么带有对象流的加密PDF对Acrobat Reader无效,但在其他任何查看器中都可以正常打开

时间:2019-06-08 14:26:47

标签: pdf

根据Adobe Acrobat Reader,我试图弄清楚为什么HexaPDF创建或修改的PDF(注:我是该库/应用程序的作者)无效。在我尝试过的任何其他PDF查看器中,它都可以正常打开。

我能够将问题缩小为与加密的PDF文件中的对象流有关。不使用对象流时,加密文件可以正常工作。

将HexaPDF创建的文件与其他工具创建的文件进行比较并没有真正的见识。而且PDF的内部结构也不错。

在Acrobat Reader中失败的示例PDF可用here-编辑:密码为“测试”。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

好的,这很有趣。不可能绝对确定,因为(显然)我无法访问Acrobat来源,但是在我看来,您好像在Acrobat中找到了不受支持的组合。

如果尝试通过对现有PDF文件应用安全性来从Adobe Acrobat创建类似文件,则不会获得完全灵活的界面。这可能是合理的,因为普通用户只会对潜在的选择感到困惑。

相反,您可以选择“兼容性”,它是与Acrobat兼容的版本。现在,您的文件使用的是安全处理程序版本2,它是在PDF 1.4中引入的,但是它是PDF 1.5文件,并且使用的外部参照流是PDF 1.5的功能。

我尝试创建兼容性设置为Acrobat 5(PDF 1.4)和Acrobat 6(PDF 1.5)的文件。 Acrobat 5文件使用安全处理程序/ V 2但没有外部参照流,而Acrobat 6文件具有外部参照流但是它使用安全处理程序/ V 4。

我看不到您的文件有任何问题,正如您所说,我尝试过的所有PDF使用者都对此感到满意。因此,我认为您的文件创建没有问题,在我看来,Acrobat似乎根本不支持带有安全处理程序/ V 2的PDF 1.5,而是坚持要求您使用/ V 4。

阅读您的问题,听起来好像您已经尝试使用/ V 2而不使用压缩的外部参照(或对象流)并且还可以。您可能要尝试的另一件事是将安全处理程序/ V 2更改为/ V 4,看看是否可行,我敢打赌,它将成功。

我想您可能想与Acrobat兼容,所以我想您将要确保不要创建此组合,如果有人坚持,则可能要警告他们其与Acrobat不兼容。 / p>