1. 通过文件路径读取
本文是截止2020年最新的pdf文本流和字节流的读取方式(pdfplumber和fitz读取pdf)
pdfplumber:
- pdf = pdfplumber.open(path)
fitz:
- pdf = fitz.open(path)
- pdf = fitz.Document(path)
2.读取二进制的pdf文件
2.1 先拿到pdf的bytes类型数据:
# 方式1:通过打开文件的方式获取
with open(path, 'rb') as f:
pdf_bytes = f.read() # 此时pdf_bytes是pdf格式的bytes数据
# 方式2:通过拿取post请求获取的bytes数据
# 以flask为例
from flask import request
files = request.files.get('files') # request获取表单文件,.get('files')是从字典中拿取key为'files'的文件
pdf_bytes = files.read() # flask的read()方法把它读取为bytes数据
2.2 读取pdf的bytes数据
pdfplumber:
import io
import pdfplumber
f = io.BytesIO(pdf_bytes)
pdf = pdfplumber.load(f) # .load(f)方法可以读取BytesIO二进制流的数据
fitz
import fitz
with fitz.Document(stream=pdf_bytes, filetype='pdf') as pdf:
print('我们拿取到了pdf对象, 可以用于后面的信息处理')
pass
# 也可以写成
pdf = fitz.Document(stream=pdf_bytes, filetype='pdf')
print('我们拿取到了pdf对象, 可以用于后面的信息处理')
pdf.close()