使用 PyMuPDF(fitz)库打开 PDF 文件,并且是从内存中的字节流(BytesIO)读取 PDF 内容

使用 PyMuPDF(fitz)库打开 PDF 文件 ,并且是从内存中的字节流(BytesIO)读取 PDF 内容,而不是直接从文件路径加载。

详细解释

python 复制代码
import fitz  # PyMuPDF 库,用于处理 PDF 文件
pdf_document = fitz.open(stream=BytesIO(pdf_content), filetype="pdf")
  • pdf_content :这个变量应是 PDF 文件的二进制数据 (例如,pdf_content = some_pdf_file.read())。
  • BytesIO(pdf_content) :将 pdf_content 转换为内存中的字节流 ,模拟文件读取,使 fitz.open() 可以像处理本地文件一样读取 PDF。
  • fitz.open()
    • stream=BytesIO(pdf_content):表示从字节流(即内存中的 PDF 数据)打开文件,而不是从磁盘文件路径打开。
    • filetype="pdf":指定文件类型为 "pdf",这样 fitz 就不会误判格式。

举个例子

假设 pdf_content 是一个从某个 API 下载的 PDF 文件内容:

python 复制代码
import requests
from io import BytesIO
import fitz

# 从 URL 获取 PDF 文件
url = "https://www.example.com/sample.pdf"
response = requests.get(url)

# 确保请求成功
if response.status_code == 200:
    pdf_content = response.content  # 获取 PDF 文件的二进制数据

    # 使用 PyMuPDF 从二进制数据加载 PDF
    pdf_document = fitz.open(stream=BytesIO(pdf_content), filetype="pdf")

    # 读取第一页文本
    first_page_text = pdf_document[0].get_text()
    print(first_page_text)

    pdf_document.close()

总结

代码适用于处理二进制格式的 PDF 文件,尤其是在:

  1. PDF 直接从 API/网络请求获取,不存到本地文件时。
  2. PDF 作为字节数据存储在数据库或其他系统中,需要直接解析时。
  3. 文件上传到 Web 应用后,想在内存中解析,避免文件存储操作时。

这样做的好处是节省 I/O 操作,提高性能,并能处理动态生成的 PDF 文件

相关推荐
ZFSS7 小时前
Localization Translate API 集成与使用指南
java·服务器·数据库·人工智能·mysql·ai编程
东风破1378 小时前
达梦DMDRS搭建、以及DMDRS双向同步
数据库·oracle·dm达梦数据库
KaMeidebaby9 小时前
卡梅德生物技术快报|抗独特型抗体开发:半抗原检测技术瓶颈拆解,抗独特型抗体开发工程化实践
前端·数据库·人工智能·其他·百度·新浪微博
NiceCloud喜云9 小时前
Claude Files API 深入:从上传、复用到配额管理的工程化指南
android·java·数据库·人工智能·python·json·飞书
A XMan.10 小时前
域名Whois信息查询V2版API接入指南
数据库
heimeiyingwang10 小时前
【架构实战】可观测性体系:从监控到全链路追踪
网络·数据库·架构
网管NO.110 小时前
SQL 日期函数全套精讲!时间格式化、日期加减、年月日提取,做日报周报直接套用
数据库·sql
杨云龙UP10 小时前
Linux 根分区被日志吃满?一次 58G Broker 日志清理实战_2026-05-20
linux·运维·服务器·数据库·hdfs·apache
sdk大全10 小时前
Studio 3T for MongoDB 2025.13.0
数据库·mongodb
码农阿豪10 小时前
平替MongoDB:金仓多模数据库助力电子证照国产化实践
数据库·mongodb