pdftk (the pdf toolkit) 是一个功能强大的命令行的 PDF 文件编辑软件,可以合并/分割 PDF 文档、对 PDF 文件加密解密、给 PDF 文档加水印、从 PDF 文档中解出附件、将 PDF 文档变成一页等等。
pdftk 是一套跨平台的工具,底层使用 iText 库,可以运行在 windows, linux, mac, freebsd, solaris 等多种操作系统。
虽然 iText 是一套 JAVA 语言实现的 函数库,pdftk 并不是基于 JAVA 的。
官方网站是:http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
下面将结合一些简单的例子介绍它的各种功能。
1。合并多个 PDF 文档
pdftk 可以将多个 PDF 文件合并成一个文件。比如下面的例子:
pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf
或者使用文件句柄:
pdftk A=1.pdf B=2.pdf cat A B output 12.pdf
下面的例子使用了文件通配符:
pdftk *.pdf cat output combined.pdf
下面的例子将多个文件的多页提取出来生成一个新的 PDF 文件:
pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf
注:文件名一定要正确,有时看着一样确还差个/,最好使用Tab键来自动补全.
2。将 PDF 文件中的一部分取出生成一个新文件
pdftk 可以随意删除或旋转页面。下面是一个把指定页码的页面移出pdf文档的示例。
pdftk new.pdf cat 1-96 98-end output new1.pdf
新生成的 new1.pdf 文档不包含页码为 97 的页面。cat 选项后跟的参数用以指定页码范围和页面方向的限定条件。1-96 表示从 1 到 96 页,98-end 表示从 98 页至文档末尾。所以输出的新 pdf 文档不包含页码为 97 的页面。
除了示例中的具体数值,还可使用一些限定字符。odd 和 even 表示奇偶页码。N、S、E、W、L、R、D 表示文档版面的旋转角度(N: 0,E: 90,S: 180,W: 270,L: -90,R: +90,D: +180)。
如:1-6odd 表示 1,3,5;
1-6even 表示 2,4,6;
1-endE 表示整篇文档所有页面都旋转 90 度。
90 度旋转 PDF 文件的第一页:
pdftk in.pdf cat 1E 2-end output out.pdf
旋转整个文档 180 度:
pdftk in.pdf cat 1-endS out.pdf
折分文档,将 PDF 文件的每一页输出成一个 PDF 文件,输出文件默认命名为 pg/_0001.pdf pg/_0002.pdf 等等:
pdftk in.pdf burst
也可以指定输出文件名,比如下面的例子:
pdftk in.pdf burst output page_%1d.pdf
3。PDF 文件加密和解密
pdftk 可以对现有 PDF 文件进行基于密码的加解密,也就是说对现有的加密的 PDF 文件解密需要提供解密密码,pdftk 不是强力破解工具。
pdftk 可以设置两种不同的密码,称为:owner password 和 user password。我的理解是 owner password 限制了用户是否可以对 PDF 文件打印、修改、拷贝等。而如果设置了 user password,用户就必须提供密码才能察看 PDF 文件。
PDF 文件可以采用 40 位加密或 128 位加密,通过使用命令选项 encrypt/_40bit 或 encrypt/_128bit 可以指定加密算法的位数。如果不指定默认采用 128 位加密。
用户的权限可以使用 allow 命令选项设置,可以设置的权限如下:
/begin{description}
/item[Printing] 允许高质量打印。
/item[DegradedPrinting] 允许高质量打印。
/item[ModifyContents] 允许修改文件内容。
/item[CopyContents] 允许拷贝。
/item[ModifyAnnotations] 允许添加注释。
/item[FillIn] 允许填入数据。
/item[AllFeatures] 允许所有特性。
/end{description}
与加解密相关的命令语法总结如下:
pdftk
[input_pw
cat
[output