无锡市住房与城乡建设网站有没有专门做家纺的网站
Python操作PDF
- 1、Python操作PDF概述
 - 2、批量拆分
 - 3、批量合并
 - 4、提取内容(文字)
 - 5、提取内容(表格)
 - 6、提取图片
 - 7、PDF添加水印
 - 8、加密与解密
 
1、Python操作PDF概述
Python操作PDF主要有两个库:PyPDF2和pdfplumber
-  
PyPDF2是一个用于处理PDF文件的Python第三方库
- 官网文档参考:https://pythonhosted.org/PyPDF2/
 
 - 官网文档参考:https://pythonhosted.org/PyPDF2/
 -  
pdfplumber是一个用于解析PDF文档的第三方库,可以解析、提取、转换PDF文档数据
- 官网文档参考:https://github.com/jsvine/pdfplumber
 
 
安装:
pip install PyPDF2
pip install pdfplumber
 
常用操作主要包括:拆分、合并、文字与表格提取、图片提取、添加水印、加密与解密等
2、批量拆分
操作步骤:
- 读取PDF的整体内容
 - 遍历每一页,以step为间隔将PDF存成小文件块
 - 将小文件块重新保存为新的PDF文件
 
import os
from PyPDF2 import PdfReader, PdfWriter# filepath:读取文件路径  filename:保存文件的统一命名  dirpath:保存文件路径  step:每隔多少页生成一个文件
def split_pdf(filepath, dirpath, filename, step):# 创建保存目录if not os.path.exists(dirpath):os.mkdir(dirpath)pdf_reader = PdfReader(filepath)# 读取每一页的数据page_list = pdf_reader.pagespages = len(page_list)for page in range(0, pages, step):pdf_writer = PdfWriter()# 拆分pdf,每step页的拆分为一个文件,如step=5,表示0-4页、5-9页...各为一个文件for index in range(page, page + step):if index < pages:pdf_writer.add_page(page_list[index])# 保存拆分后的小文件save_path = os.path.join(dirpath, filename + str(int(page / step) + 1) + '.pdf')print(save_path)with open(save_path, "wb") as out:pdf_writer.write(out)print("保存路径: " + dirpath)split_pdf(r'C:\Users\cc\Desktop\test.pdf', r'C:\Users\cc\Desktop\PDF', 'pdf_split_', step=2)
 
3、批量合并
操作步骤:
- 确定合并文件顺序
 - 循环追加到一个文件块中
 - 保存为一个新文件
 
# filepath:要合并的PDF文件目录  filename:原文件的统一命名  dirpath:合并后的保存路径
def concat_pdf(filepath, dirpath, filename):pdf_writer = PdfWriter()# ['pdf_split_1.pdf', 'pdf_split_2.pdf']list_filename = os.listdir(filepath)# 对文件进行排序list_filename.sort(key=lambda x: int(x[:-4].replace(filename, 