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

如何解决PyPDF2解密PDF时io.UnsupportedOperation: can't do nonzero end-relative seeks报错

错误原因

你遇到的io.UnsupportedOperation: can't do nonzero end-relative seeks(中文含义:输入输出不支持操作:无法执行非零值的相对文件末尾寻址操作)报错,核心问题是参数位置写反:你将本该传入open()函数的二进制读取模式参数'rb',错误传给了PyPDF2.PdfFileReader的构造函数,导致PDF文件实际是以默认的文本模式'r'打开的。文本模式不支持随机跳转读取(seek操作),而PyPDF2解析PDF结构必须调用seek操作,因此触发报错。

修正后的代码

import PyPDF2 

# 把'rb'作为open()的第二个参数,指定以二进制只读模式打开文件
with open('C:\\Path\\to\\the\\file\\encrypted.pdf', 'rb') as pdf_file:
    pdf_reader = PyPDF2.PdfFileReader(pdf_file)
    # 执行解密
    pdf_reader.decrypt('rosebud')
    
    # 后续可以正常操作PDF,比如读取第一页内容
    # first_page = pdf_reader.getPage(0)
    # print(first_page.extractText())

补充注意事项

  • 推荐使用with语句管理文件句柄,代码块执行结束后会自动关闭文件,避免资源泄漏
  • 如果修正参数后仍解密失败,可先升级PyPDF2到最新版本以支持更多加密算法:pip install --upgrade PyPDF2
  • 确认输入的密码和PDF加密时设置的密码完全一致,注意区分大小写、排查首尾多余空格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:24:03