Python拆分PDF为单页时的问题

Python拆分PDF为单页时的问题

工作需要将一个7页的PDF文档拆分,要求每一页保存成一个PDF文件,根据现在的PyPDF2说明,使用了下述代码:

#coding=utf8
import os
from PyPDF2 import PdfReader, PdfWriter
def pdf_split(filename,filepath,save_path):
    reader=PdfReader(filepath)
    writer=PdfWriter()
    p=len(reader.pages)
    print(p)
    for q in range(0,p):
        reader=PdfReader(filepath)
        writer.add_page(reader.pages[q])
        save_dir_path=os.path.join(save_path,filename+str(q)+'.pdf')
        with open(save_dir_path,'wb') as out:
          writer.write(out)
          writer.close()
            
pdf_split('past-split','D:\工作相关\TEST\\化学反应总结-7.pdf','D:\工作相关\TEST')

现在发现,能输出7个拆分后的PDF文件,但是只有第一份是正确的,也就是只有第一页,随后生成的每份PDF都在前一份的基础上增加了后一页(也就是第二份PDF有2页,第三份有3页,以此类推)。
所以上面的代码问题出在哪里了?我个人理解应该是和add_page有关,PdfWriter.add_page后面是不是应该执行某个语句将之前已输出完成的page清除,这样才能保证后续输出的PDF文档不会一直增加页数?但是这种功能怎样实现?应该如何修改才能实现将PDF拆分成单页的效果?谢谢各位不吝赐教!

把writer=new PrintWRITER()放循环里面看看。望采纳

改成如下代码试试。

# coding=utf8
import os
from PyPDF2 import PdfReader, PdfWriter


def pdf_split(filename, filepath, save_path):
    reader = PdfReader(filepath)
    p = len(reader.pages)
    print(p)
    for q in range(0, p):
        reader = PdfReader(filepath)
        writer = PdfWriter()
        writer.add_page(reader.pages[q])
        save_dir_path = os.path.join(save_path, filename + str(q) + '.pdf')
        with open(save_dir_path, 'wb') as out:
            writer.write(out)
            writer.close()


pdf_split('past-split', 'D:\工作相关\TEST\\化学反应总结-7.pdf', 'D:\工作相关\TEST')
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^