一个开源PDF文件合并、切割工具

664 阅读3分钟

背景

PDF是一种非常常见的格式,最近填写申请时,上传的材料都要求是PDF文件,经常需要图片转PDF,或者把图片追加到现有的PDF中。像WPS这种办公软件或者PDF软件都有这些功能,但要么是收费的,要么阉割功能限制图片或者PDF数量;也有一些提供在线简单处理PDF功能的网站,但又担心隐私泄露,索性在git上找了编辑PDF的轮子,自己使用撸一个小工具。

lwe命令行

我在之前使用Go实现了一个帮助开发者提高效率的命令行工具lwe,因此想在lwe原有功能的基础上增加一组PDF处理的相关命令。在github上调研之后,最终确定使用pdfcpu提供的能力完成我的需求,pdfcpu是一个Go实现的PDF文件处理的开源项目,功能十分强大,感兴趣的可以去看看。

lwe中实现了两个pdf开头的子命令,lwe下载地址:

  • pdfm 合并PDF或者图片

  • pdfc 从PDF中截取指定的页

pdfm

按照指定的文件顺序,将多个PDF、图片文件合并成一个PDF文件

使用方式:

Usage:
  lwe pdfm [flags]

Examples:
lwe pdfm out.pdf in1.pdf,in2.jpg,*.png,in3.pdf ...

举例说明如何使用

win下,cmd或者powerShell中执行命令

./lwe.exe pdfm out.pdf in1.pdf,in2.jpg,*.png,in3.pdf

mac下同理,下载对应shell文件, 更多可以查看,lwe的安装、使用

这条命令的功能是:将当前目录下的in1.pdf、in2.jpg、后缀是.png、以及in3.pdf,按照顺序合并生成一个名为out.pdf的新PDF

注:

  • 指定输入文件时,同时支持PDF和图片。另,如果输入单个图片等价与将图片转换成PDF格式
  • 目前支持的图片格式png|jpg|jpeg
  • 指定输入文件时,支持文件名模糊匹配文件,模糊时多个文件之间顺序随机

pdfc

按照指定的页码,从PDF中截取对应的页生成PDF文件

使用方式:

Usage:
  lwe pdfc [flags]

Examples:
lwe pdfc [-m] in.pdf outDir 2,3,5,7-9,15 ...

Flags:
  -h, --help    help for pdfc
  -m, --merge   merge all selected pages into one PDF,default is false

举例说明如何使用

./lwe.exe pdfc -m in.pdf outfile/ 2,3,5,7-9,15

这条命令的功能是:将当前目录下的in1.pdf文件中的第2、3、5、7、8、9、15页截取出来,并合并在outfile/目录下生成一个新的PDF文件。

注:

  • 支持按照范围指定页面,比如7-9,等价7,8,9
  • 可选参数-m,默认情况下,每个截取的页都生成独立对应的PDF,如果想要截取的结果合并到一个PDF中,命令中添加-m。

其它

lwe是一个用Go实现,帮助开发者提高工作效率的跨平台命令行工具,除了pdfm pdfc命令外,还实现了很多其它实用的功能命令:

  1. Git增强多仓库操作能力:glog、gl、gcl、gst

  2. 由建表SQL语句转换成Java Bean、Go结构体、Json等

  3. 将SQL语句转换成ElasticSearch查询的DSL语言

  4. PDF工具:合并多个图片或者PDF、截取PDF指定页

  5. 其它小工具

    • 获取Navicat连接配置中的密码
    • 同步两个目录下文件
    • 格式化请求url

lwe项目已开源,对lwe感兴趣或者想要学习Go都可以参与进来!