强大的pdf文件操作小工具——PDFtk的小白用法 【转载】
转载出处https://www.cnblogs.com/basterdaidai/p/6204518.html
前言
作为程序员,大家都知道的,总是会被技术小白问各种跟编程没什么关系的硬件、软件问题。曾经被一技术小白同事问到有没有什么办法合并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 -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..pdf owner_pw foopass
同上,同时给PDF加上访问者密码(会弹出一个密码输入框)此例原文件为in.pdf,加密后文件为mydoc.128.pdf,所有者密码为foopass,访问者密码为baz
@echo off
pdftk %cd%\base1.pdf output %cd%\foopassbaz..pdf owner_pw foopass user_pw baz
解密PDF文档,input_pw空一格,然后是所有者密码,这里输入文件为加密文件foopassbaz.128.pdf,输出文件nopass.pdf,输出文件会去掉所有者密码和访问者密码。
@echo off
pdftk %cd%\foopassbaz..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查看相关资料,这里就不一一写出来了,毕竟小白们没用到那么细致的功能。
参考:
http://blog.csdn.net/fresherman/article/details/5979204
https://www.pdflabs.com/docs/pdftk-cli-examples/
强大的pdf文件操作小工具——PDFtk的小白用法 【转载】的更多相关文章
- uPDF-功能强大的PDF文件处理小工具
前几天因为工作原因,需要将一个PDF压缩一下. 网上找了半天,要么收费,要么就是转换的质量不太好.论坛也找到一些破解的软件,但是总有点不太合适,有些功能还挺复杂.也有些在线转换的,又考虑到自己较为隐私 ...
- 用C#Winform写个简单的批量清空文件内容和删除文件的小工具
用C#Winform写个简单的批量清空文件内容和删除文件的小工具 本文介绍这个简单得不能再简单的小项目.做这个项目,有以下目的. 1 当然是做个能用的工具 2 学习使用Github 关于用VS2013 ...
- java中文件操作的工具类
代码: package com.lky.pojo; import java.io.BufferedReader; import java.io.BufferedWriter; import java. ...
- 在windows下实时监控、接受文件变化小工具
在windows下实时监控文件变化小工具 在测试的时候,我们可能想实时监控系统打出的log信息,在unix系统上我们可以用"tail -f"实现,在windows下一般就无法做 ...
- PDF文件比对工具
tex/PDF对比工具讨论:https://tex.stackexchange.com/questions/65453/track-changes-in-latex 如果有源文件,直接用latexpa ...
- [PDF] PDFOperation--C#PDF文件操作帮助类 (转载)
点击下载 PDFOperation.rar 这个类是关于PDFOperation的帮助类,主要是实现C#PDF的文件操作,具体实现功能如下1.构造函数2.私有字段3.设置字体4.设置页面大小5.实例化 ...
- angular2之pdf文件操作大全
最近的项目中需要显示pdf内容.下载pdf.甚至是前端生成pdf 适用于angular2.4或者更高版本 情景1.需要将页面的某个部分转成pdf文件并下载(即将页面的部分html内容转成pdf文件) ...
- 开源一个自动整理B站UWP客户端软件进行批量下载的视频文件的小工具BiliVideosReoganizeHelper
大家都知道B站是一个很受欢迎的视频学习网站,上面有很多无私的up主上传了大量优秀的教学视频,在此向B站致敬,向广大UP主致敬. 有时,我们需要下载收藏一些视频,以防止以后找不到了.那么我们可以用B ...
- C# 文件操作的工具类
using System.IO; namespace 文件操作类 { public class FileHelper { /// <summary> /// 判断文件是否存在 /// &l ...
随机推荐
- spring boot 四大组件之Actuator
执行器(Actuator)的定义 执行器是一个制造业术语,指的是用于移动或控制东西的一个机械装置,一个很小的改变就能让执行器产生大量的运动.An actuator is a manufacturing ...
- APICloud框架——融云+UIChatTools实现即时通讯聊天
今天完成了公司app的聊天界面的收发消息功能,结合融云2和UIChatTools模块实现,只是实现了基本功能,好多细节还没有实现,废话不多说,上代码 输入框页面(win) 先引入所需模块 // 融云模 ...
- HTML之web项目的目录结构
文件夹树注解 htmls html一个文件放除去index.html外的其他页面文件. imgs 存放所有的图片文件:.png..jpg..jpeg.壁纸等. 示例:icon.png.ho ...
- SVN——将VS项目提交至SVN时,怎样忽略bin和obj目录中的文件
方法一: 通过设置SVN的Global ignore pattern值. 在设置了全局排除obj bin文件夹之后,需commit提交该项目,以使svn服务器应用该排除忽略 方法二: 具体实现 在解决 ...
- Ext 面板(Panel)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java学习之集合(Collection接口)
集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储 集合特点: 1.用于存储对象的容器 2.集合长度可变 3.不可以存储基本数据类型 集合体系的顶层C ...
- MySQL数据库(六) —— SQL注入攻击、视图、事物、存储过程、流程控制
SQL注入攻击.视图.事物.存储过程.流程控制 一.SQL注入攻击 1.什么是SQL注入攻击 import pymysql conn = pymysql.Connect( user="roo ...
- [未解决]报错:DeprecationWarning: decodestring() is a deprecated alias since Python 3.1, use decodebytes()
DeprecationWarning: decodestring() is a deprecated alias since Python 3.1, use decodebytes()
- 《深入理解Java虚拟机》-(实战)boolean类型在虚拟机中是如何处理的
这里先引出Java的8大基本类型.直接上图吧. 可以看到,除了boolean和char类型之外,越往下的类型的值域是包含以上的值域的.因此,从上面的基本类型转换成下面的基本类型,无需强制转换.关于它们 ...
- C# 反射入门
反射 别的用处先不管,至少在WinForm登录后的权限控制上有大用,比如登录后的窗体左侧树,点击通过字符串创建出窗体实例 案例如下图 AssTest类很简单 namespace assemblyTes ...