PDF 操作是的知识点,初级的 PDF 自动化包括 PDF 文档的拆分、合并、提取等操作,更高级的还包括 WORD与PDF互转等
初级操作一般比较常用,也可以解决较多的办公内容,所以本节将会主要介绍 PDF 的初级操作,具体内容将会从以下几个小节展开:
4.1. 相关介绍
Python 操作 PDF 会用到两个库,分别是:PyPDF2 和 pdfplumber
其中 PyPDF2 可以更好的读取、写入、分割、合并PDF文件,而 pdfplumber 可以更好的读取 PDF 文件中内容和提取 PDF 中的表格
对应的官网分别是:
由于这两个库都不是 Python 的标准库,所以在使用之前都需要单独安装
win+r 后输入 cmd 打开 command 窗口,依次输入如下命令进行安装:
pip install PyPDF2
pip install pdfplumber
安装完成后显示 success 则表示安装成功
另外,在下文中需要用到两个文件:一个是本次教程的处理目标PDF、一个是在添加水印章节需要用到的水印PDF文件
其中第一个PDF大家可以换成自己想要处理的目标PDF,在下文的代码中修改相应的名称即可;第二个PDF大家可以根据文中给出的教程自行生成水印PDF文件(嫌麻烦的同学可以直接用我提供的水印PDF即可)
上述两个文件的下载链接如下:百度网盘 请输入提取码 提取码:1025
另外,需要注意的是,第一个PDF和第二个PDF直接放在运行代码的同级目录下即可,运行的时候无需创建文件夹,大家注意下!
4.2. 批量拆分
将一个完整的 PDF 拆分成几个小的 PDF,因为主要涉及到 PDF 整体的操作,所以本小节需要用到 PyPDF2 这个库
拆分的大概思路如下:
- 读取 PDF 的整体信息、总页数等
- 遍历每一页内容,以每个 step 为间隔将 PDF 存成每一个小的文件块
- 将小的文件块重新保存为新的 PDF 文件
需要注意的是,在拆分的过程中,可以手动设置间隔,例如:每5页保存成一个小的 PDF 文件
拆分的代码如下:
In [ ]:
import os from PyPDF2 import PdfFileWriter, PdfFileReader def split_pdf(filename, filepath, save_dirpath, step=5): """ 拆分PDF为多个小的PDF文件, @param filename:文件名 @param filepath:文件路径 @param save_dirpath:保存小的PDF的文件路径 @param step: 每step间隔的页面生成一个文件,例如step=5,表示0-4页、5-9页...为一个文件 @return: """ if not os.path.exists(save_dirpath): os.mkdir(save_dirpath) pdf_reader = PdfFileReader(filepath) # 读取每一页的数据 pages = pdf_reader.getNumPages() for page in range(0, pages, step): pdf_writer = PdfFileWriter() # 拆分pdf,每 step 页的拆分为一个文件 for index in range(page, page+step): if index < pages: pdf_writer.addPage(pdf_reader.getPage(index)) # 保存拆分后的小文件 save_path = os.path.join(save_dirpath, filename.split('.')[0]+str(int(page/step)+1)+'.pdf') print(save_path) with open(save_path, "wb") as out: pdf_writer.write(out) print("文件已成功拆分,保存路径为:"+save_dirpath) filename = '易方达中小盘混合型证券投资基金2020年中期报告.pdf' filepath = os.path.join(os.getcwd(), filename) save_dirpath = os.path.join(os.getcwd(), '易方达中小盘混合型证券投资基金2020年中期报告-拆分') split_pdf(filename, filepath, save_dirpath, step=5)
y:\2021_AI_learning\打卡学习\OfficeAutomation\source\task04\易方达中小盘混合型证券投资基金2020年中期报告-拆分\易方达中小盘混合型证券投资基金2020年中期报告1.pdf /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 y:\2021_AI_learning\打卡学习\OfficeAutomation\source\task04\易方达中小盘混合型证券投资基金2020年中期报告-拆分\易方达中小盘混合型证券投资基金2020年中期报告2.pdf /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 y:\2021_AI_learning\打卡学习\OfficeAutomation\source\task04\易方达中小盘混合型证券投资基金2020年中期报告-拆分\易方达中小盘混合型证券投资基金2020年中期报告3.pdf /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 y:\2021_AI_learning\打卡学习\OfficeAutomation\source\task04\易方达中小盘混合型证券投资基金2020年中期报告-拆分\易方达中小盘混合型证券投资基金2020年中期报告4.pdf /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 y:\2021_AI_learning\打卡学习\OfficeAutomation\source\task04\易方达中小盘混合型证券投资基金2020年中期报告-拆分\易方达中小盘混合型证券投资基金2020年中期报告5.pdf /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体 /ABCDEE+宋体