pdftk简介
项目中的pdf需要添加背景图,但是wkhtmltopdf不是很友好,图片的大小位置有点偏移,于是就用下面这个目录。
CENTOS服务器 6 和 7 有一些区别
CENTOS6
sudo yum install libgcj
sudo rpm -i pdftk-2.02-1.*.rpm
CENTOS7
由于CENTOS7的yum库中不再支持libgcj
找到了一个老外的
x86_64
yum localinstall https://www.linuxglobal.com/static/blog/pdftk-2.02-1.el7.x86_64.rpm
i686
yum localinstall https://www.linuxglobal.com/static/blog/pdftk-2.02-1.el7.i686.rpm
简介
PDFtk 是什么?我觉得官网的一句话解释得很好。
If PDF is electronic paper, then PDFtk is an electronic staple-remover, hole-punch, binder, secret-decoder-ring, and X-Ray-glasses. PDFtk is a simple tool for doing everyday things with PDF documents.
其官方网站为: http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit
PDFtk 目前分为三个版本:
- PDFtk Server:命令行工具。支持 windows、Linux、Mac。
- PDFtk Free:图形界面基础免费版;仅限 windows 用户;功能仅限于 PDF 合并和分割;
- PDFtk Pro:图形界面专业收费版;仅限 windows 用户,可以对 PDF 文档进行合并、分割、旋转、加水印、加邮戳、加密。
对于 Linux 用户,唯一的选择是免费的 PDFtk Server,其功能与收费 PDFtk Pro 完全相同,只是没有 GUI 而已。作者还是很厚道的。
Linux 的各个发行版的官方源中基本都有该软件,直接 apt-get
或者 yum
安装即可。
功能
- 合并 PDF;
- 分割 PDF 页面;
- 旋转 PDF 文档或页面;
- PDF 解密;(不是破解)
- PDF 加密;
- 用 X/FDF 填写 PDF 表格;
- 从 PDF 表格中生成 PDF Data Stencils;
- 加背景水印或前景印章;
- 报告 PDF Metrics,书签和元数据;
- 增加 / 更新 PDF 书签或元数据;
- 给 PDF 页面或文档加附件;
- 解压 PDF 附件;
- 分解 PDF 文档为多个单页;
- 解压缩和重压缩页面流;
- 修复受损的 PDF 文档;
这功能完全可以与 Adobe Acrobat 相媲美了,更重要的是 PDFtk 支持 Linux 且完全免费。(个人用户免费,若用于商业用途需付费)。
用法示例
具体选项看这里: http://www.pdflabs.com/docs/pdftk-man-page/
下面给出一些常见的例子。例子原文
扫描一本书,odd.pdf 为书的全部奇数页,even.pdf 为书的全部偶数页,下面的命令可以将两个 pdf 合并成页码正常的书:
pdftk A=odd.pdf B=even.pdf shuffle A B output collated.pdf
如果 odd.pdf 是逆序的:
pdftk A=odd.pdf B=even.pdf shuffle Aend-1 B output collated.pdf
加密 PDF:
pdftk secured.pdf input_pw foopass output unsecured.pdf
PDF 128 位加密,保留全部权限:
pdftk 1.pdf output 1.128.pdf owner_pw foopass
PDF 128 位加密,保留全部权限,打开文档需输入密码 “baz”:
pdftk 1.pdf output 1.128.pdf owner_pw foo user_pw baz
PDF 128 位加密,打开文档需输入密码 “baz”,保留打印之外的其他权限:
pdftk 1.pdf output 1.128.pdf owner_pw foo user_pw baz allow printing
合并 in1.pdf 和 in2.pdf 到新 PDF 中:
pdftk in1.pdf in2.pdf cat output out1.pdf
或(使用句柄):
pdftk A=in1.pdf B=in2.pdf cat A B output out1.pdf
或(使用通配符):
pdftk *.pdf cat output combined.pdf
去除 in1.pdf 中的第 13 页,并创建 out1.pdf:
pdftk in.pdf cat 1-12 14-end output out1.pdf
或
pdftk A=in1.pdf cat A1-12 A14-end output out1.pdf
对输出进行 40 位加密,撤销所有权限,设置 owner 密码为 foopass:
pdftk 1.pdf 2.pdf cat output 3.pdf encrypt_40bit owner_pw foopass
合并两个文件,其中一个需要被加密。对输出不加密:
pdftk A=secured.pdf 2.pdf input_pw A=foopass cat output 3.pdf
解压 PDF 页面流,然后就可以在文本编辑器中编辑 PDF 文件:
pdftk doc.pdf output doc.unc.pdf uncompress
压缩 PDF:
pdftk mydoc.pdf output mydoc.clear.pdf compress
修复破损的 PDF:
pdftk broken.pdf output fixed.pdf
将一个 PDF 文档分割成一页一个文档:
pdftk in.pdf burst
将一个 PDF 文档分割成一页一个文档,并加密,允许低质量的打印:
pdftk in.pdf burst owner_pw foopass allow DegradedPrinting
获取 PDF 问的元数据和书签信息:
pdftk in.pdf dump_data output report.txt
将 PDF 第一页顺时针旋转 90 度:
pdftk in.pdf cat 1east 2-end output out.pdf
将整个 PDF 文档旋转 180 度:
pdftk in.pdf cat 1-endsouth output out.pdf