8行代码搞定PDF切分的问题

上次写了30行代码把会计朋友的周常工作安排明白了,这周又遇到问题了 。下午给发消息说,栋哥借用下你的网盘会员下载个CPA资料 。我的10k每秒 , 等着下载完,我估计也考完试了 。
好家伙,把链接给我,我下载下来,一看足足450页242M的PDF文件 。准备微信转发过去,结果最大发送文件不能超过200M 。

8行代码搞定PDF切分的问题

那就用QQ吧,结果这个好家伙,n年不登录,密码都忘了 。我说算了,直接在网上搜一下pdf在线切分工具,分成两个就可以了 。


没想到这家伙得寸进尺 , 跟我说,那这样更好,你直接把第9章的内容发给我吧,我现在正好学习这里 。


刚想说这都是小事,但问题来了 , 随便点开了两个在线pdf切分,一个限制不能超过40M , 一个限制不能超过50M 。再大了就要开会员,我能为了这点事情再注册个会员,暴露我的信息 , 整天的接收广告?肯定不可以!
8行代码搞定PDF切分的问题

8行代码搞定PDF切分的问题

不过想想也是,200多M , 上传下载都是占用人家带宽,人家也是花钱的 。
【8行代码搞定PDF切分的问题】这个时候如果说没办法了 , 那就是对一个资深调库程序员的最大的侮辱 。


打开PyCharm,安装上PyPDF2库 。


第1步 , 把源文件以二进制数据方式读取到内存
第2步,使用PdfFileReader把二进制数据格式化
第3步,创建一个PDF编写器PdfFileWriter
第4步,循环读取第67到78页的内容,依次添加到PdfFileWriter
第5步,PDF编写器把内容写到数据文件中,毕竟命名第9章.PDF
至此加上引入表的语句,一共8行代码 。


当然为了更加方便的时候 , 符合代码封装的特性,把相关参数提取出来,并添加main函数 。
完成示例代码如下:
# -- coding: utf-8 --# 导入PYPDF2库from PyPDF2 import PdfFileReader, PdfFileWriterdef split_single_pdf(read_file, start_page, end_page, pdf_file):# 1. 获取原始pdf文件fp_read_file = open(read_file, 'rb')# 2. 将要分割的PDF内容格式化pdf_input = PdfFileReader(fp_read_file)# 3. 实例一个 PDF文件编写器pdf_output = PdfFileWriter()# 4. 把67到78页放到PDF文件编写器for i in range(start_page, end_page):pdf_output.addPage(pdf_input.getPage(i))# 5. PDF文件输出with open(pdf_file, 'wb') as pdf_out:pdf_output.write(pdf_out)print(f'{read_file}分割{start_page}页-{end_page}页完成,保存为{pdf_file}!')if __name__ == '__main__':# 待切分文件文件名in_pdf_name = "2020年CPA会计考试重难点.pdf"# 切分后文件文件名out_pdf_name = '第9章.pdf'# 切分开始页面start = 67# 切分结束页面end = 79split_single_pdf(in_pdf_name, start, end, out_pdf_name)


如果想更加的细化一点,在做一个可视化界面 , 在用pyinstaller库,打包成exe可执行文件 。这样可以随时随地使用,并不依赖Python环境 。


要注意书写的文件位置,不然容易报错,找不到该文件 。


就这少说又能混一顿饭了 , 好了,今天的分享就到这里,感兴趣的朋友按照我说的可以试试,然后打包成一个工具 , 然后挂在网上销售 , 10块钱一个,巧了还能赚个奶茶钱 。


我是马拉松程序员,可不止于代码 。

相关经验推荐