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

Python使用fsspec与spire.pdf处理Azure Gen2存储PDF遇类型错误

问题原因

你遇到的wrong type错误是因为fsspec_handle_read.read()返回的是字节数据(bytes类型),而Spire.PDF的PdfDocument.LoadFromFile()方法只接受文件路径字符串作为参数,类型不匹配导致报错。

解决方案

下面提供两种可行的修复方案,按需选择:

方案1:临时文件中转

将从Azure存储读取的字节数据写入本地临时文件,再通过文件路径加载到Spire.PDF中:

import fsspec
import tempfile
from spire.pdf import PdfDocument

# 读取Azure存储中的PDF字节数据
with fsspec.open(f'abfss://container/folder/myfile.pdf', 
                 account_name=adls_account_name, 
                 account_key=adls_account_key) as fsspec_handle_read:
    big_pdf_bytes = fsspec_handle_read.read()

# 写入临时文件
with tempfile.NamedTemporaryFile(suffix='.pdf', delete=False) as temp_pdf:
    temp_pdf.write(big_pdf_bytes)
    temp_pdf_path = temp_pdf.name

# 加载PDF并拆分
pdf = PdfDocument()
pdf.LoadFromFile(temp_pdf_path)

# 拆分单页并保存
for page_num in range(pdf.Pages.Count):
    new_pdf = PdfDocument()
    new_pdf.Pages.Add(pdf.Pages[page_num])
    new_pdf.SaveToFile(f'page_{page_num+1}.pdf')
    new_pdf.Close()

pdf.Close()

# 可选:删除临时文件
import os
os.unlink(temp_pdf_path)

方案2:使用流加载(更高效)

Spire.PDF提供了LoadFromStream()方法,可以直接加载字节流,无需临时文件:

import fsspec
from io import BytesIO
from spire.pdf import PdfDocument

# 读取Azure存储中的PDF字节数据并转为BytesIO流
with fsspec.open(f'abfss://container/folder/myfile.pdf', 
                 account_name=adls_account_name, 
                 account_key=adls_account_key) as fsspec_handle_read:
    big_pdf_bytes = fsspec_handle_read.read()
    pdf_stream = BytesIO(big_pdf_bytes)

# 通过流加载PDF
pdf = PdfDocument()
pdf.LoadFromStream(pdf_stream)

# 拆分单页并保存
for page_num in range(pdf.Pages.Count):
    new_pdf = PdfDocument()
    new_pdf.Pages.Add(pdf.Pages[page_num])
    new_pdf.SaveToFile(f'page_{page_num+1}.pdf')
    new_pdf.Close()

pdf.Close()
关键说明
  • Spire.PDF的LoadFromFile()仅支持文件路径,不能直接传入字节或流;LoadFromStream()支持BytesIO等流对象,更适合内存中处理文件。
  • 如果需要将拆分后的文件写回Azure存储,可以继续使用fsspec.open()以写入模式打开目标路径,将生成的单页PDF字节写入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:03:27