注意:我不确定这是在这里更好,还是在超级用户下更好,但由于它涉及 poppler 库,我会在这里假设,因为这里的人更有可能知道它是如何工作的。
软件:Irex Iliad 的 iPDF 2.12 + Poppler 2.11(最后一次提交 2006-12-12)。来源在这里。
问题文档:Sciam 数字 PDF(其中任何一个,因为都以相同的方式生成)。
该文档可以使用 Okular、Adobe Reader 和 XPDF 正常加载,无需任何密码,并且可以毫无问题地阅读。
使用 iPDF 加载 - 所以 poppler - 需要密码才能打开文档。
我尝试绕过 Poppler/SecurityHandler.cc 中的 SecurityHandler:checkEncryption 方法,使其返回 true。这有效,但无法加载带有错误的pdf:
Error: Unsupported version/revision (4/4) of Standard security handler
Error (13571568): Unknown compression method in flate stream
Error: Top-level pages object is wrong type (null)
Error: Couldn't read page catalog
(PV_E)PDFCore.cpp:61,open() Open PDF document (èÖ@(èÖ@à failed with error code 2
(PV_E)PDFApp.cpp:185,open() Could not open file!
这表明实际的流是加密的,如果为真的话,这表明 okular 以某种方式绕过了这一点。
我知道人们在其他移动设备上也有类似的问题(我在 Nexus One 上发现了类似的报告)。
我对 pdf 格式的工作原理知之甚少,无法知道是否应该使用一些“默认”密码来打开(不需要其他权限)文档。有没有?当它只需要使用用户密码(空白?)打开它时,它是否正在请求所有者密码?
否则,有谁知道像 Okular/XPDF 这样的东西如何能够毫无问题地打开它?