上次写了30行代码把会计朋友的周常工作安排明白了,这周又遇到问题了。下午给发消息说,栋哥借用下你的网盘会员下载个CPA资料。我的10k每秒,等着下载完,我估计也考完试了。

好家伙,把链接给我,我下载下来,一看足足450页242M的PDF文件。准备微信转发过去,结果最大发送文件不能超过200M。

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


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


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

不过想想也是,200多M,上传下载都是占用人家带宽,人家也是花钱的。

这个时候如果说没办法了,那就是对一个资深调库程序员的最大的侮辱。


打开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, PdfFileWriter def 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 = 79 split_single_pdf(in_pdf_name, start, end, out_pdf_name)


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


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


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


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