怎样拆分PDF文件

2020-04-22  本文已影响0人  乔木方思

工作中经常会用到pdf,有时候需对pdf文件进行一些处理却让我们束手无策,抓耳挠腮。

比如拆分pdf

一、通过总结思考,拆分pdf大概有以下几种方法

1官方PDF阅读器

很遗憾我没有找到。如果有找到的同学麻烦留言告诉我一下,我学习学习。官方PDF阅读器上合并PDF功能都有,理论上拆分PDF的功能也应该有才对。不过就算有估计也是个付费功能。

2 打印

这个估计是最常用的方法了。原来把拆分PDF的功能隐藏到这儿了。合并PDF模块是一个付费项目,为啥拆分PDF也不搞成付费项目。难道工作中合并PDF的需求要远远高于拆分PDF的需求?

打印这个方法主要有几个可调节的参数。

(1) 打印机参数一定要选Microsoft Print to PDF

(2) 份数,就是自己需求的分数

(3) 打印页码,可以根据自己的需求设置。比如:

我只需要第1页,则表示为1或1-1;

我需要第2页到第10页,则表示为2-3

我需要第1页,第5页到第10页,第12页,则可以表示为2,5-10,12。如图所示。

这种方法虽然很好用,能满足我们拆分pdf的大部分需求。不过我觉得还是有一些美中不足的地方。

目前我能感受到的大致2点:

(1) 操作对象是单个pdf文件,如果我有10个甚至上百个的PDF需要做类似或相同处理,则比较费时费力。

(2)

打印后的文件是单个PDF文件,比如我的需求是将原始PDF的第1页,第5到10页,第12页单独打印一个文件,照上图打印后是一个第1页,第5到10页,第12页的合并PDF文件。当然也可以单独打印这些页数,但是当原始PDF文件数量过多时,也是比较费时费力。

总结一句,就是不能很好解决批量拆分的需求。

3以浏览器方式打开pdf文件执行打印,与2比较类似就不再赘述

4网络工具

网络上有很多关于pdf处理的小工具,也能解决很多我们对于pdf的许多需求。

不过这些工具虽然好用,我却不愿使用。主要基于3个原因:

(1)我穷。这些网络工具基本上都是要收费的。我没钱

(2)个人隐私泄露。大部分软件或工具都需要用户注册,绑定手机号、邮箱或者社交软件。有可能会泄露个人信息。

(3) 文件隐私。网络工具的基本原理大致是用户上传pdf文件给服务器,服务器处理数据,服务器返回处理结果给用户。这中间服务器有没有偷偷备份用户上传的数据也不得而知。如果是工作中需要保密的PDF文件,也有泄露文件隐私的风险。

以上就是大致我能想到的拆分pdf文件的方法,还知道其他方法的同学,欢迎留言告诉我,我继续学习。

二、python拆分pdf

前怕狼,后畏虎。那不如换个思路。

没有满意的解决办法,那我们就自己动手实现一个解决办法吧。

Python第三方库里有个处理PDF的库PyPDF2,用它实现来解决拆分pdf的需求。

PyPDF2库主要有PdfFileReader,PdfFileWriter、PdfFileMerger、PdfFileReader和PageObject这4个常用模块。拆分pdf会用到PdfFileReader,PdfFileWriter、PageObject

为了方便描述,我就分别称其为读取器和写入器吧。这个库拆分pdf大致的思路逻辑是:

先在有一个pdf文件需要处理,那么打开这个pdf,将其以参数的形式传递给读取器模块,实例化一个PdfFileReader对象。这个读取器对象有一个页码数量numPages的属性,可以知道PDF有多少页;也有一个getPage()的方法,用for循环遍,可以获得PDF的每一页的PageObject对象实例。然后实例化一个PdfFileWriter对象,这个写入器有个方法addPage(),将获得的PageObject实例通过写入器写入已指定路径下创建的文件里。

至此,拆分pdf的思路已经完成。下面就是具体的代码实现。

其实,代码还有很多可以优化和丰富的地方。感兴趣的同学可以思考思考,看看我们想的是不是一样的。后续优化和丰富,以后有时间再分享。

最后码字不易,如果觉得对大家有帮助,感谢多多支持。

上一篇下一篇

猜你喜欢

热点阅读