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

使用PyPDF2拆分PDF保存时出现AssertionError报错如何解决?

问题解决方法

错误原因

这个AssertionError: assert "/Length" in data是PyPDF2的严格格式校验触发的,你处理的PDF文件存在元数据缺失、格式不标准或者未完全解密的情况,PyPDF2默认的严格模式不允许这类不符合PDF规范的字段缺失,因此直接抛出断言错误。

解决方法1(优先推荐):替换为官方维护的pypdf库

PyPDF2项目已于2022年合并到全新的pypdf项目中,新版本修复了大量兼容性问题,对非标准PDF的支持更好,修改成本极低:

  1. 先卸载旧的PyPDF2:
pip uninstall PyPDF2 -y
  1. 安装pypdf:
pip install pypdf
  1. 你的代码只需要修改导入语句和少量调用方法即可,核心逻辑完全不变:
from pypdf import PdfReader, PdfWriter

pdf = PdfReader("input.pdf")   # 源PDF文件
for page in range(len(pdf.pages)):
    pdf_writer = PdfWriter()
    pdf_writer.add_page(pdf.pages[page])

    output = f'output{page}.pdf'  # 待保存的PDF文件名
    with open(output, 'wb') as output_pdf:
        pdf_writer.write(output_pdf)

解决方法2:保留PyPDF2,关闭严格校验模式

如果不想更换依赖,只需要在初始化PdfFileReader时添加strict=False参数,跳过严格的格式校验即可:

from PyPDF2 import PdfFileReader, PdfFileWriter

# 新增strict=False参数,关闭严格校验
pdf = PdfFileReader("input.pdf", strict=False)
for page in range(pdf.getNumPages()):
    pdf_writer = PdfFileWriter()
    pdf_writer.addPage(pdf.getPage(page))

    output = f'output{page}.pdf'
    with open(output, 'wb') as output_pdf:
        pdf_writer.write(output_pdf)

备选方案:使用PyMuPDF库处理

如果以上两种方法仍有问题,可以改用兼容性更强的PyMuPDF(fitz)库实现拆分:

  1. 安装依赖:
pip install pymupdf
  1. 拆分代码示例:
import fitz

pdf = fitz.open("input.pdf")
for page in range(pdf.page_count):
    pdf_writer = fitz.open()
    pdf_writer.insert_pdf(pdf, from_page=page, to_page=page)
    pdf_writer.save(f"output{page}.pdf")
    pdf_writer.close()
pdf.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 11:39:03