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
相关产品推荐
相关产品推荐

