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

PyPDF2中PdfFileWriter调用addPage()报错:缺少必需位置参数‘page’的问题求助

解决PdfFileWriter.addPage()参数错误的问题

嘿,我一眼就发现你代码里的问题啦!你遇到的这个报错:

TypeError: addPage() missing 1 required positional argument: 'page'

其实是两个小失误导致的,咱们一个个理清楚:

第一个核心问题:没有实例化PdfFileWriter对象

你写的pdf_writer = PdfFileWriter只是把类本身赋值给了变量,而不是创建这个类的实例。当你直接用类调用addPage()方法时,Python会把它当作一个未绑定的方法——这时候它需要第一个参数是类的实例(也就是self),但你只传了curr_page,所以才会弹出“缺少参数”的错误。这个提示有点误导人,实际是因为self参数没被自动传入(只有通过实例调用方法时,Python才会自动把实例作为self传进去)。

正确的写法应该是给PdfFileWriter加上括号,创建一个实例:

pdf_writer = PdfFileWriter()

第二个容易忽略的问题:实例化的位置不对

你把pdf_writer的赋值语句放在了循环内部,这意味着每次循环都会新建一个PdfFileWriter对象,之前添加的页面都会被丢弃,最后生成的PDF只会保留最后一页。所以必须把实例化代码移到循环外面。

修正后的完整代码

from PyPDF2 import PdfFileReader, PdfFileWriter  # 确保导入了需要的类

# 读取源PDF文件
pdf = PdfFileReader("suenios_lucidos.pdf")
# 实例化PdfFileWriter对象,这一步要放在循环外面
pdf_writer = PdfFileWriter()

# 遍历需要提取的页面
for page in range(pdf.getNumPages() - 210):
    curr_page = pdf.getPage(page)
    pdf_writer.addPage(curr_page)

# 最后别忘了把内容写入新的PDF文件
with open("new_suenios_lucidos.pdf", "wb") as output_file:
    pdf_writer.write(output_file)

这样修改后,应该就能正常生成包含所有指定页面的新PDF啦!

内容的提问来源于stack exchange,提问作者Gabino Antuña Ortiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:17:41