pdftk

pdftk这个软件有 pdftk 、 pdftk pro 、 pdftk server 几个版本。实际上最基础的版本就是 server 版本,这个版本有一个 pdftk 的命令行工具,命令行工具包含完整的功能。 pdftk 和 pdftk pro 只是在这个命令行工具上做了一个图形界面, pdftk 是免费的, pro 这个版本的售价也只要 $3.99 ,如果嫌命令行麻烦可以直接买一个。

命令行工具的主要功能如下:

  • 合并PDF文档或整理PDF页面扫描
  • 将PDF页面拆分为新文档
  • 旋转PDF文档或页面
  • 根据需要解密输入(需要密码)
  • 根据需要加密输出
  • 使用 X/FDF 数据和/或拼合表单填写PDF表单
  • 从PDF表单生成FDF数据模板
  • 应用背景水印或前景印章
  • 报告PDF指标,书签和元数据
  • 添加/更新PDF书签或元数据
  • 将文件附加到PDF页面或PDF文档
  • 打开PDF附件包装
  • 将PDF文档拼成单页
  • 解压缩并重新压缩页面流
  • 修复损坏的PDF(如果可能)

pdftk 的文档: PDFtk Server Manual

旋转 pdf

# 所有页面逆时针旋转90度
pdftk test.pdf rotate 1-endwest output test-out.pdf
# 所有页面顺时针旋转90度
pdftk test.pdf rotate 1-endeast output test-out.pdf
# 1-5页逆时针旋转90度(第一页就用1-1)
pdftk test.pdf rotate 1-5west output test-out.pdf
# 偶数页逆时针旋转90度
pdftk test.pdf rotate eveneast output test-out.pdf
# 奇数页逆时针旋转90度
pdftk test.pdf rotate oddeast output test-out.pdf
# 1-10页的偶数页逆时针旋转90度
pdftk test.pdf rotate 1-10eveneast output test-out.pdf
# 1、4、6页逆时针旋转90度
pdftk test.pdf cat 1east 2-3 4east 5 6east 7-end output test-out.pdf

合并 pdf

# 合并 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
# 扫描一本书,odd.pdf 为书的全部奇数页,even.pdf 为书的全部偶数页,下面的命令可以将两个 pdf 合并成页码正常的书:
# shuffle 的功能是 A 一页、B 一页的顺序合并的
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
# 合并两个文件,其中一个需要密码。对输出不加密:
pdftk A=secured.pdf 2.pdf input_pw A=foopass cat output 3.pdf

分割 pdf

# 将一个 PDF 文档分割成一页一个文档:
pdftk in.pdf burst
# 将一个 PDF 文档分割成一页一个文档,并加密,允许低质量的打印:
pdftk in.pdf burst owner_pw foopass allow DegradedPrinting

加密 pdf

# 加密 PDF("foopass"为加密的密码):
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
# 对输出进行 40 位加密,撤销所有权限,设置 owner 密码为 foopass:
pdftk 1.pdf 2.pdf cat output 3.pdf encrypt_40bit owner_pw foopass

其他 pdf 操作

# 获取 PDF 问的元数据和书签信息:
pdftk in.pdf dump_data output report.txt
# 解压 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

imagemagick

我主要使用这个软件来转换 pdf 到图片格式,不过除了安装 imagemagick 以外还需要同时安装 ghostscript。

转换 pdf 到图片格式

magick convert -density 600 -trim test.pdf -quality 100 test.jpg

参考文档