上次写了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块钱一个,巧了还能赚个奶茶钱。
我是马拉松程序员,可不止于代码。