You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Fitz无需本地下载编辑Azure Blob Storage中的PDF

从Azure Blob Storage读取PDF并添加高亮后存回

需求说明

我有一份存储在Azure Blob Storage中的PDF文件,需要对其中部分内容添加高亮标注,之后将修改后的新PDF文件存回Azure Blob Storage。此前尝试的伪代码无法直接对接Blob存储,需解决读取和写入的具体实现问题。

解决方案

结合PyMuPDF(fitz)处理PDF编辑,以及Azure Blob Storage SDK完成文件的读取与上传,通过字节流实现本地无文件落地的操作。

步骤1:安装依赖

需要安装两个核心库:

pip install pymupdf azure-storage-blob

步骤2:完整实现代码

import fitz
from azure.storage.blob import BlobServiceClient

def edit_pdf_in_blob(connection_string, container_name, source_blob_name, target_blob_name):
    # 初始化Blob服务客户端
    blob_service_client = BlobServiceClient.from_connection_string(connection_string)
    container_client = blob_service_client.get_container_client(container_name)
    
    # 1. 从Blob Storage读取PDF为字节流
    source_blob_client = container_client.get_blob_client(source_blob_name)
    pdf_bytes = source_blob_client.download_blob().readall()
    
    # 加载PDF到PyMuPDF文档对象
    doc = fitz.open("pdf", pdf_bytes)
    
    # 2. 编辑PDF(替换为你已有的高亮逻辑)
    # 示例高亮代码(可按需修改):
    page = doc[0]  # 获取第一页
    target_text = "需要高亮的目标文本"
    text_positions = page.search_for(target_text)
    for pos in text_positions:
        page.add_highlight_annot(pos)
    
    # 3. 将修改后的PDF转为字节流
    output_bytes = doc.tobytes()
    doc.close()
    
    # 4. 上传字节流到Blob Storage
    target_blob_client = container_client.get_blob_client(target_blob_name)
    target_blob_client.upload_blob(output_bytes, overwrite=True)

# 调用示例
if __name__ == "__main__":
    # 替换为你的Azure Blob配置信息
    CONNECTION_STRING = "你的Azure Blob连接字符串"
    CONTAINER_NAME = "你的容器名称"
    SOURCE_BLOB_NAME = "原始PDF文件名.pdf"
    TARGET_BLOB_NAME = "修改后的PDF文件名.pdf"
    
    edit_pdf_in_blob(CONNECTION_STRING, CONTAINER_NAME, SOURCE_BLOB_NAME, TARGET_BLOB_NAME)

关键说明

  • 读取Blob:通过download_blob().readall()获取PDF字节数据,直接传入fitz.open()(指定格式为"pdf"),无需下载到本地文件。
  • 编辑操作:保留你已有的高亮代码逻辑即可,PyMuPDF的文档对象操作不受数据源影响。
  • 保存回Blob:使用doc.tobytes()将修改后的文档转为字节流,再通过upload_blob()上传到目标Blob,overwrite=True支持覆盖已存在的文件。

内容的提问来源于stack exchange,提问作者newbie101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:57:03