文档章节

强大的pdf文件操作小工具——PDFtk的小白用法

mickelfeng
 mickelfeng
发布于 2017/03/30 13:58
字数 1208
阅读 313
收藏 1

前言

作为程序员,大家都知道的,总是会被技术小白问各种跟编程没什么关系的硬件、软件问题。曾经被一技术小白同事问到有没有什么办法合并pdf文件,当时自己也是一头雾水,因为自己工作生活很少会去操作pdf文件,而当时公司对开发人员的电脑权限管理很严格,不论是上网还是安装软件,都受到很大限制,最后硬着头皮忙活了一阵子也没在解决。

前两天在写批处理程序的时候,发现批处理程序是有合并文件的命令的,我忽然想起之前这个同事的问题,就试了一下合并pdf,然而并不行。虽然失落了一下,但本着学习的精神还是百度了一下关于pdf的一些知识,发觉大部分操作pdf文件的软件不仅安装费事,还基本都要收费,我去,连我程序员都嫌费事的事,好意思都教小白么?不过当我试了下pdftk,瞬间就被吸引了,因为用起来真的很简单,只要稍稍加工一下,就可以扔给小白们用了。

认识PDFtk

PDFtk(官网:https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)是一款国外开发的软件,目标是使PDF更容易操作。官网上挂着一些客户软件的核心功能其实也是要收费才能用,但是它有一个服务器版本是免费的,这就是本篇文章的主角。PDFtk支持合并、旋转、加水印、加附件、加密、

下载安装

 下载地址:https://www.pdflabs.com/tools/pdftk-server/

选择符合操作系统的版本下载,安装过程就不表了,小白式的安装就可以。安装成功后安装目录的bin目录会有libiconv2.dll和pdftk.exe文件,这就是操作pdf的PDFtk工具。环境变量也多了这个工具的路径。如果有像博主这样公司不给安装软件的,复制这两个文件就可以。

操作命令

官网(https://www.pdflabs.com/docs/pdftk-cli-examples/)上有举了一些例子,这里整理成批处理命令方便小白,相关命令保存为.bat文件,然后把希望操作的pdf文件和.bat文件置于同一目录即可。

合并文件夹内所有pdf,输出combind.pdf

@echo off
pdftk %cd%\*.pdf cat output %cd%\combined.pdf

把多个PDF的不同页面组合成一个新的PDF文档,这里取base1.pdf的第一页,base2.pdf的第一页,输出combined2.pdf

@echo off
pdftk A=%cd%\base1.pdf B=%cd%\base2.pdf cat A1 B1 output %cd%\combined2.pdf

旋转PDF,旋转的角度为上北下南左西右东(north\south\west\east),如下例,combined第一页向右旋转而其他保持不变则旋转参数为1east 2-end,如果全部旋转则是1-endeast(注意:这里没有空格)

@echo off
pdftk %cd%\combined.pdf cat 1east 2-end output %cd%\rotate.pdf

使用128位强度对PDF进行所有者加密(owner password),加密后PDF文件处于只读状态,没有所有者密码不能对该PDF做各种文件操作。这里对base1.pdf进行所有者加密,密码为foopass,输出文件为poopass.128.pdf

@echo off
pdftk %cd%\base1.pdf output %cd%\foopass.128.pdf owner_pw foopass

同上,同时给PDF加上访问者密码(会弹出一个密码输入框)此例原文件为in.pdf,加密后文件为mydoc.128.pdf,所有者密码为foopass,访问者密码为baz

@echo off
pdftk %cd%\base1.pdf output %cd%\foopassbaz.128.pdf owner_pw foopass user_pw baz

解密PDF文档,input_pw空一格,然后是所有者密码,这里输入文件为加密文件foopassbaz.128.pdf,输出文件nopass.pdf,输出文件会去掉所有者密码和访问者密码。

@echo off
pdftk %cd%\foopassbaz.128.pdf input_pw foopass output %cd%\nopass.pdf

加水印,以下命令会把stamp.pdf当成背景水印(即stamp.pdf叠加在底层)合到base1上并输出stampback.pdf,如果想把stamp.pdf合成base1的前景水印(即stamp.pdf叠加在表层),把以下的backgroud换成stamp即可。

@echo off
pdftk %cd%\base1.pdf background %cd%\stamp.pdf output %cd%\stampback.pdf

以上就是常用的pdf文件操作的相关命令了,实际上PDFtk还有提供了不少功能,具体可与参照官网和输入在CMD输入pdftk --help查看相关资料,这里就不一一写出来了,毕竟小白们没用到那么细致的功能。

附件

附件提供了自己测试用的pdf和小工具libiconv2.dll和pdftk.exe文件,如果有朋友不方便安装(像我的上家公司)可以直接下载附件来操作。

pdf小工具

 

参考:

http://blog.csdn.net/fresherman/article/details/5979204

https://www.pdflabs.com/docs/pdftk-cli-examples/

本文转载自:http://www.cnblogs.com/basterdaidai/p/6204518.html

mickelfeng

mickelfeng

粉丝 237
博文 2803
码字总数 605868
作品 0
成都
高级程序员
私信 提问
两款 Linux 桌面中的图形化操作 PDF 的工具

PDF-Shuffler 和 PDF Chain 是在 Linux 中修改 PDF 的绝佳工具。 由于我谈论和写作了些 PDF 及使用它们的工具的文章,有些人认为我喜欢这种格式。其实我并不是,由于各种原因,我不会深入它。...

作者: Scott Nesbitt
03/02
0
0
职场小白们不曾掌握的这项办公技能,你还在用word,而他们都在用pdf

PDF在如今可谓是非常常见的文档格式了,主要是因为它十分便捷,无论在哪种显示器或者打印机上都可保证精确的颜色和准确的打印效果,即PDF会忠实地再现原稿的每一个字符、颜色以及图象。 而P...

技能工具箱
2018/01/19
0
0
PDF文档工具--jPDF Tweak

jpdftweak (jPDF Tweak) 是采用 Java 开发的用于调整 PDF 文档的小工具,它可以实现 PDF 文档的合并、分割、页面旋转、页面重新排序、水印、加密、签名以及添加附件等操作。我把它当作是 pd...

匿名
2009/08/21
2.2K
0
PDF文档处理工具包--pdftk

Pdftk 是一个简单的命令行工具,用来进行日常的 PDF 文档处理,包括合并、拆分和加密、增加水印、解析PDF元数据、压缩和解压、修复受损的PDF文档等功能。 PDFtk Server 无需 Adobe Acrobat ...

匿名
2010/10/07
3.2K
0
风吹过的绿洲/fill_pdf_utf8

fillpdfutf8 fillpdfutf8 fixes PDFtk and Mcpdf unicode issues, so you can write 中国 into your forms. fillpdfutf8 aims to become a drop-in replacement for PDFtk. It is essential......

风吹过的绿洲
2017/09/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部