PyPDF2 是一个纯 Python PDF 库,可以读取文档信息(标题,作者等)、写入、分割、合并PDF文档,它还可以对pdf文档进行添加水印、加密解密等
文档:https://pythonhosted.org/PyPDF2
安装:
pip install pypdf2
pip install pdfplumber
pdfplumber
提取PDF文字
「提取单页pdf文字」
# 提取pdf文字 import pdfplumber with pdfplumber.open("D:\\pdffiles\\Python编码规范中文版.pdf") as pdf: page01 = pdf.pages[0] #指定页码 text = page01.extract_text()#提取文本 print(text)
「提取所有页pdf文字」
import pdfplumber with pdfplumber.open("D:\\pdffiles\\Python编码规范中文版.pdf") as pdf: for page in pdf.pages: text = page.extract_text()#提取文本 print(text)
「提取所有pdf文字并写入文本中」
import pdfplumber with pdfplumber.open("D:\\pdffiles\\Python编码规范中文版.pdf") as pdf: for page in pdf.pages: text = page.extract_text()#提取文本 txt_file = open("D:\\pdffiles\\Python编码规范中文版.txt",mode='a',encoding='utf-8') txt_file.write(text)
提取PDF表格
「提取表格」
# 提取pdf表格 import pdfplumber with pdfplumber.open("D:\\pdffiles\\人力资源部岗位编制.pdf") as pdf: page01 = pdf.pages[0] #指定页码 table1 = page01.extract_table()#提取单个表格 # table2 = page01.extract_tables()#提取多个表格 print(table1)
「提取表格,保存为excel文件」
import pdfplumber from openpyxl import Workbook #保存表格,需要安装openpyxl with pdfplumber.open("D:\\pdffiles\\人力资源部岗位编制.pdf") as pdf: page01 = pdf.pages[0] table = page01.extract_table() workbook = Workbook() sheet = workbook.active for row in table: sheet.append(row) workbook.save(filename="D:\\pdffiles\\人力资源部岗位编制.xlsx")
PyPDF2
PyPDF2 中有两个最常用的类:PdfFileReader和PdfFileWriter,分别用于读取 PDF 和写入 PDF。其中PdfFileReader传入参数可以是一个打开的文件对象,也可以是表示文件路径的字符串。而PdfFileWriter则必须传入一个以写方式打开的文件对象。
「PdfFileReader 对象的属性和方法」
「PdfFileWriter 对象的属性和方法」
分割PDF
from PyPDF2 import PdfFileReader, PdfFileWriter file_reader = PdfFileReader("D:\\pdffiles\\Python编码规范中文版.pdf") # getNumPages() 获取总页数 for page in range(file_reader.getNumPages()): # 实例化对象 file_writer = PdfFileWriter() # 将遍历的每一页添加到实例化对象中 file_writer.addPage(file_reader.getPage(page)) with open("D:\\pdffiles\\{}.pdf".format(page),'wb') as out: file_writer.write(out)
合并PDF
将上述分割的pdf合并成一个文件
「示例代码」
from PyPDF2 import PdfFileReader, PdfFileWriter file_writer = PdfFileWriter() for page in range(34): # 循环读取需要合并pdf文件 file_reader = PdfFileReader("D:\\pdffiles\\{}.pdf".format(page)) # 遍历每个pdf的每一页 for page in range(file_reader.getNumPages()): # 写入实例化对象中 file_writer.addPage(file_reader.getPage(page))
with open("D:\\pdffiles\\合并.pdf",'wb') as out: file_writer.write(out)