怎样拆分PDF文件
工作中经常会用到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的思路已经完成。下面就是具体的代码实现。
其实,代码还有很多可以优化和丰富的地方。感兴趣的同学可以思考思考,看看我们想的是不是一样的。后续优化和丰富,以后有时间再分享。
最后码字不易,如果觉得对大家有帮助,感谢多多支持。