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

前言

作为程序员,大家都知道的,总是会被技术小白问各种跟编程没什么关系的硬件、软件问题。曾经被一技术小白同事问到有没有什么办法合并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/

时间: 2024-12-12 16:29:05

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

用C#Winform写个简单的批量清空文件内容和删除文件的小工具

用C#Winform写个简单的批量清空文件内容和删除文件的小工具 本文介绍这个简单得不能再简单的小项目.做这个项目,有以下目的. 1 当然是做个能用的工具 2 学习使用Github 关于用VS2013创建一个项目并添加到Github的教程,请参考(http://www.admin10000.com/document/4004.html).简单来说,就是先用VS创建项目:然后在Github网站上创建一个Respo(本项目的代码托管项目),记下(https://*.git)那个地址:最后用"提交&q

asp.net 文件操作小例子(创建文件夹,读,写,删)

静态生成要在虚拟目录下创建文件夹 来保存生成的页面 那么就要对文件进行操作 一.创建文件夹 using System.IO; string name = "aa"; string path = Server.MapPath("") + "\\" + name; if (Directory.Exists(path)) { Response.Write("<script>alert('文件夹已存在了!');history.go(

C#使用iTextSharp封装的PDF文件操作类实例

本文实例讲述了C#使用iTextSharp封装的PDF文件操作类.分享给大家供大家参考.具体分析如下: 这个C#代码主要讲iTextSharp中用于操作PDF文件的方法进行了再次封装,可以更加方便的访问PDF文档,可以动态生成PDF文件.添加内容.设置段落.设置字体等. using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; namespace DotNet.Utilities { /// <summary> ///

如何压缩pdf文件 把pdf文件变小

许多文档资料在进行传输时都是用PDF格式,虽然PDF文件本身就是易传输的文档,但是有些文件资料,尤其图片内容较多文档,动则几十兆甚至上百兆,这在传输文件时极不方便.而且文件过大,在打开文件时可能会使系统卡死.所以在传递一些文档资料的时候都会将其压缩一下,这样可以有利于文件的传输已经打开查看. PDF压缩不是指将文件弄成.RAR或.ZIP之类的压缩文件,而是在不改变文件格式的情况下,将文件所占存储变小.因此这需要用PDF压缩器,而不是普通的压缩软件.使用工具:PDF压缩软件操作步骤: 打开PDF压

自己写的 根据编码搜索文件的小工具

文件.目录搜索的小工具 用正则式限制文件名.关键字.目录 开始是专门为了搜索GBK和UTF8两种编码的文件,现在可以制定多种编码方式来搜索文件 本科生,代码可能很不规范 因为windows下好像没有grep,win7默认的搜索用起来也不习惯,search my file也不支持搜索中文,所以开始试着按自己想法尝试写这个东西用来搜源码文件. https://github.com/wo4li2wang/MSearcher 参数 ? -f ?搜索的文件夹,可以用正则式表示? -k ?搜索文件包含的关键

csv文件生成小工具

运维经常遇到客户要求下载某些数据列表的需求.一般我们是提供一个csv格式的文件. 如果用shell来做这件事的,通常是两种方法: 1.捕获终端输出,后续对输出做一定处理.但是终端输出实际上已经丢失了很多格式信息,很难做到完善处理. 2.用mysql内置的FILE命令一次性生成文件.mysql内置的函数功能有限,没法做到比较好的输出格式化. 所以选择了python来做. 主要注意几点: 1.我们的数据库是使用utf8编码.所以生成的csv文件默认话就是utf8编码.实际上也不应该转码,因为utf8

局域网内基于UDP的文件传输小工具

一.目标 基于UDP来设计一个文件传输的小工具,以此来了解UDP协议的特点. 内容: 基本要求: 输入对方IP地址,对方如果存在,可以给对方发送文件. 扩展要求: (1)工具具有友好的用户界面: (2)局域网内使用该工具的两台主机可以互相进行文字通信: (3)自动按照一定频率扫描局域网内其他开启了该工具的主机,并在界面上用列表显示出来: (4)传输文件和文字内容时,直接选择界面上已经显示出来的存活主机,不需要手动输入IP地址. 二.设计实现 环境: Ubuntu14.04+Gcc4.8+Ecli

C# 文件操作的工具类

根据查阅的资料对代码进行修改并完善备注后的结果.希望能对新手有所帮助. 1 using System; 6 using System.IO; 8 namespace 文件操作类 9 { 10 public class FileHelper 11 { 12 /// <summary> 13 /// 判断文件是否存在 14 /// </summary> 15 /// <param name="filePath">文件全路径</param> 1

文件操作的工具类

相关代码如下:包含创建文件,创建目录,创建压缩文件,获取文件等相关操作. public class FileUtil { private static final Log LOGGER = LogFactory.getLog(FileUtil.class); private static ArrayList<File> fileList = new ArrayList<File>(); private static boolean dirExist = false; public