0

这是关于 Origami,用于浏览 PDF 文件的 Ruby 工具,位于http://esec-lab.sogeti.com/pages/Origami

例如,我试图打开一个 PDF 文件,将其解压缩,然后重写原始 PDF。这是我试图用来完成此任务的完整代码:

hg clone https://code.google.com/p/origami-pdf/
cd origami-pdf/
rake
cd ..
curl 'http://www.ada.gov/hospcombrprt.pdf' -o hospcombrprt.pdf
origami-pdf/bin/pdf2ruby -x hospcombrprt.pdf
mv hospcombrprt.pdf hospcombrprtORIG.pdf
cd hospcombrprt
ruby hospcombrprt.rb # THIS STEP PRODUCES ERRORS
bc hospcombrprt.pdf ../hospcombrprtORIG.pdf || echo FAILED

但是,这会产生以下错误:

/Users/williamentriken/Developer/origami-pdf/lib/origami/page.rb:75:in `pages': Invalid page tree (Origami::InvalidPDFError)
    from /Users/williamentriken/Developer/origami-pdf/lib/origami/pdf.rb:689:in `compile'
    from /Users/williamentriken/Developer/origami-pdf/lib/origami/pdf.rb:233:in `save'
    from hospcombrprt.rb:189:in `<main>'

有没有其他人使用这个库成功地执行了这个操作,你能分享一下吗?

4

1 回答 1

0

原帖

我在库中玩了一段时间,但我不断收到错误和小错误,例如重复的页面和丢失的页面......

...您应该阅读作者关于使用 Origami 库的限制的评论。

我推荐combine_pdf gem,它非常适合简单的 pdf 操作,例如合并、冲压等。

更新

我查看了特定的 PDF 文件,这可能是与不受支持的 PDF 版本有关的问题。

http://www.ada.gov/hospcombrprt.pdf文件使用 4 类加密进行加密,根据 PDF 标准,从 PDF 1.5 开始,该加密为:

“(PDF 1.5)安全处理程序使用 CF、StmF 和 StrF 条目指定的规则定义文档中加密和解密的使用。”

加密使用 AES v.2,仅限于 PDF 1.6 及更高版本:

“AESV2 (PDF 1.6) 应用程序应向安全处理程序询问加密密钥,并应使用“算法 1:使用 RC4 或 AES 算法加密数据”,在密码块链接 (CBC) 模式下使用 AES 算法隐式解密数据具有 16 字节块大小和一个初始化向量,该向量应随机生成并作为流或字符串中的前 16 个字节放置。”

因此,即使写入了解密代码,由于 PDF 文件的结构方式,应用该代码的方式也可能未知……

...最好从简单的 PDF 文件开始,然后修补目前尚不支持的任何内容。

于 2014-12-15T04:04:32.443 回答