Pdftk 是一个简单的命令行工具,用来进行日常的 PDF 文档处理,包括合并、拆分和加密、增加水印、解析PDF元数据、压缩和解压、修复受损的PDF文档等功能。
系统环境
Ubuntu 20.04
安装
使用snap包管理器来安装pdftk:
$ sudo snap install pdftk
合并多个PDF
下面例子中将admin_guide.pdf started_guide.pdf user-guide.pdf三个文件合并在一起,输出文件名为:guide.pdf:
bob@ubuntu-20-04:~/test$ pdftk *.pdf cat output guide.pdf
或者
bob@ubuntu-20-04:~/test$ pdftk A=user-
guide.pdf B=started_guide.pdf C=admin_guide.pdf cat A C B output Guide.pdf
使用A,B,C变量之后,可以按照自定义的顺序合并。
可以看到合并之后对的大小是2M。是前面三个文件合并之后的大小。
拆分PDF
使用burst参数来拆分PDF。如果需要指定切割后的每一个pdf文件名,可以添加output参数,后面跟上前缀:
bob@ubuntu-20-04:~/test$ pdftk user-guide.pdf burst output user-guide_%02d.pdf
上面output后面跟的值,%02d意思是输出2位十进制的数字。
加密pdf
为PDF添加访问密码
将user-guide.pdf文件加入访问密码admin123,并保存为encrypt-user-guide.pdf文件。
bob@ubuntu-20-04:~/test$ pdftk user-
guide.pdf output encrypt-user-guide.pdf user_pw admin123
看到下图,打开encrypt-user-guide.pdf文件时需要提供密码。
为PDF添加编辑密码
下面将user-guide.pdf文件添加编辑密码,密码为Admin123。输出文件为editpw-user-guide.pdf。
bob@ubuntu-20-04:~/test$ pdftk user-
guide.pdf output editpw-user-guide.pdf owner_pw Admin123
为PDF添加访问密码和编辑密码
下面命令使用owner_pw和user_pw设置编辑密码和访问密码。
bob@ubuntu-20-04:~/test$ pdftk user-guide.pdf output allpw-user-
guide.pdf owner_pw Admin123 user_pw admin123
使用下面的allow printing参数,可以让加密的文件支持打印。
bob@ubuntu-20-04:~/test$ pdftk user-guide.pdf output encrypt-user-
guide.pdf owner_pw Admin123 allow printing
可以看到下图,不能点击打印,这是没有添加allow printing参数的状态。
下面图片是添加allow printing参数的状态,不需要输入编辑密码,就可以打印:
解密PDF
下面是解密命令,关键参数是input_pw,首先需要提供编辑的密码,也就是设置的owner_pw参数,导出为noeditpw-user-guide.pdf之后,再将noeditpw-user-guide.pdf文件解密访问密码,也就是user_pw参数,导出文件为decrypt-user-guide.pdf。解密编辑密码和访问密码都是同样的命令,但解密顺序首先是编辑密码,然后是访问密码。
bob@ubuntu-20-04:~/test$ pdftk encrypt-user-guide.pdf input_pw Admin123 output noeditpw-user-guide.pdf
bob@ubuntu-20-04:~/test$ pdftk noeditpw-user-guide.pdf input_pw admin123 output decrypt-user-guide.pdf
提取奇数页面
使用下面命令提取出文件中的奇数页,使用的参数是1-endodd意思是从第一页到尾页选择odd(奇数页),导出为odd-started_guide.pdf文件。
bob@ubuntu-20-04:~/test$ pdftk started_guide.pdf cat 1-endodd output odd-
started_guide.pdf
提取偶数页面
使用下面命令提取出文件中的偶数页,使用的参数是1-endeven意思是从第一页到尾页选择even(偶数页),导出为even-started_guide.pdf文件。
bob@ubuntu-20-04:~/test$ pdftk started_guide.pdf cat 1-endeven output even-
started_guide.pdf
提取指定页面
下面命令可以提取出指定页数并另存文件。
bob@ubuntu-20-04:~/test$ pdftk started_guide.pdf cat 2 3 5 7-
end output rand_page_started_guide.pdf