这是关于Origami,用于在http://esec-lab.sogeti.com/pages/Origami
浏览PDF文件的Ruby工具举例来说,我正在尝试打开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>'
有没有其他人使用此库成功执行此操作,请您分享一下?
答案 0 :(得分:0)
原帖:
我在图书馆玩了一段时间,但我不断收到错误和小错误,例如复制的页面和丢失的页面......
...您应该阅读作者关于使用Origami库的限制的评论。
我推荐combine_pdf宝石,它非常适合简单的PDF操作,例如合并,加盖等。
<强>更新强>:
我查看了特定的PDF文件,这可能是与不受支持的PDF版本相关的问题。
http://www.ada.gov/hospcombrprt.pdf文件使用类型4加密进行加密,根据PDF标准,从PDF 1.5开始,加密:
&#34;(PDF 1.5)安全处理程序使用CF,StmF和StrF条目指定的规则定义文档中加密和解密的使用。&#34;
加密使用AES v.2,仅限于PDF 1.6及以上版本:
&#34; AESV2(PDF 1.6)应用程序应向安全处理程序询问加密密钥,并使用&#34;算法1:使用RC4或AES算法加密数据来隐式解密数据&#34;,使用密码块链接(CBC)模式下的AES算法,具有16字节的块大小和初始化向量,该向量应随机生成并作为流或字符串中的前16个字节放置。&#34;
因此,即使写入了解密代码,由于PDF文件的结构方式,可能无法知道应用该代码的方式......
......最好从简单的PDF文件开始,然后修补任何尚未支持的内容。