Origami-pdf Origami是一个Ruby框架

来源:互联网 发布:淘宝凑单什么意思 编辑:程序博客网 时间:2024/05/22 06:23

前言

因为在分析一个ruby脚本,里面用了Origami,只找到英文的资料,就翻译一下,希望能上百度,微笑



原文地址:

http://code.google.com/p/origami-pdf/wiki/GettingStarted


关于Origami

Origami是一个用于操作PDF的Ruby框架。它具有一个PDF解析器,并可以分析,修改,创建恶意的PDF文件。尽管它的用途很多,但是它主要当作安全工具使用。正因为如此,它不关心图形的内容而且不包括PDF渲染器。Origami支持如下的PDF规范:

  • 加密,直到Adobe Reader X
  • 数字签名
  • 表单 (Acrobat and XML)
  • JavaScript
  • 注释
  • Flash
  • 文件附件
  • 对象流


安装

最近的方法安装最新版的Origami是使用Rubygems:

gem install origami

你也能Mercurial(Mercurial是一种轻量级分布式版本控制系统,采用Python语言实现)复制开发树

hg clone 'https://code.google.com/p/origami-pdf/' origam

可选依赖关系

根据你的需要,可选包可以安装来扩展Origami的功能
获得图形界面的支持:

gem install gtk2


获得JavaScript环境支持:
gem install therubyracer

用法

这里有几种方法来使用Origami:

  • 图形界面
  • shell界面
  • 用Origami API编写自己的脚本


图形界面(PDF Walker)

假如你安装了gtk2,你可以尝试Origami的图形界面。它可以让你快速的浏览文档的内容,而不用修改文档。
你能在上面使用双击跟随一个对象引用,并且用Esc键回去。
启动命令:

$ pdfwalker



命令界面

Origami命令行会启动一个标准Ruby命令行并包含了Origami命令空间。这会方便在一个文档上使用几行代码执行简单的操作。

$ pdfsh>>>

创建一个新的空白文件:
 >>> PDF.new.save('blank.pdf')

 感染并加密一个存在的文档:
 >>> pdf = PDF.read 'foo.pdf' >>> pdf.onDocumentOpen Action::JavaScript[ 'app.alert("Hello!")' ] >>> pdf.encrypt.save 'bar.pdf' 

在对象里搜索数据
 >>> pdf.grep "/bin/sh" 
 
检查PDF对象
>>> pdf = PDF.read 'sample.pdf' >>> page = pdf.pages.first 33 0 obj <<%        /MediaBox [ 0 0 243.78 153.071 ]        /Parent 24 0 R        /Contents 38 0 R        /Resources 34 0 R        /CropBox [ 0 0 243.78 153.071 ]        /Rotate 0        /Type /Page >> endobj >>> page.xrefs[0] [ 33 0 R 1 0 R ] >>> page.xrefs[0].parent 24 0 obj <<%        /Count 2        /Kids [ 33 0 R 1 0 R ]        /Type /Pages >> endobj >>> page.Parent 24 0 obj <<%        /Count 2        /Kids [ 33 0 R 1 0 R ]        /Type /Pages >> endobj >>> pdf[24] 24 0 obj <<%        /Count 2        /Kids [ 33 0 R 1 0 R ]        /Type /Pages >> endobj
 
 编辑页面行内容(你也许需要打开编辑环境变量):
 >>> pdf.pages[2].edit 

 编辑流:
  >>> pdf.Catalog.Metadata.edit
 
 你也能使用JavaScript引擎,加入你添加了支持了:
 >>> pdf.Catalog.OpenAction.JS.eval_js >>> pdf.js_engine.shell js> this [object Doc] js> console.println('foo') foo nil js> this.numPages 2

自定义脚本

Origami是一个Ruby框架,你也能编写自己的Ruby脚本,是适合的地方使用Origami脚本。这能用于执行特别的操作,在一堆文档中。
Origami已经完成了一些通常有用的脚本:

  • pdfencrypt/pdfdecrypt (加密和解密一个脚本)
  • pdfdecompress (去掉一些压缩层)
  • pdfmetadata (打印文档元数据)
  • pdfextract (从一个文档提取不同的对象)
  • pdfcop (自动分析引擎)
  • 一些混杂的脚本(pdf2ruby, pdf2graph, pdf2pdfa, ...)


你可以看看Origami的samples目录,找到的一些基本的脚本示例。
 


PS:其实是不想分析代码了,就来写翻译了,唉~~~

原创粉丝点击