【问题标题】:Splitting PDF file into single pages using PyPDF2使用 PyPDF2 将 PDF 文件拆分为单页
【发布时间】:2023-03-31 20:37:01
【问题描述】:

我正在尝试将 3 页 PDF 拆分为 3 个单独的 PDF 文件。我一直在尝试使用以下代码:

from PyPDF2 import PdfFileReader, PdfFileWriter

pdf_file = open('Sample.pdf','rb')
pdf_reader = PdfFileReader(pdf_file)
pdf_writer = PdfFileWriter()


pageNumbers = pdf_reader.getNumPages()

for i in range (pageNumbers):
    pdf_writer.addPage(pdf_reader.getPage(i))
    split_motive = open('Sample_' + str(i+1) + '.pdf','wb')
    pdf_writer.write(split_motive)
    split_motive.close()

pdf_file.close()

但这似乎总是生成 3 个 PDF 文件:

  1. 源 PDF 的第一页
  2. 源 PDF 的第一页和第二页
  3. 源 PDF 的第一页、第二页和第三页

谁能帮忙?

【问题讨论】:

    标签: python python-3.x pdf split pypdf2


    【解决方案1】:

    pdf_writer = PdfFileWriter() 移动到循环体中。

    from PyPDF2 import PdfFileReader, PdfFileWriter
    
    pdf_file = open('Sample.pdf','rb')
    pdf_reader = PdfFileReader(pdf_file)
    
    
    pageNumbers = pdf_reader.getNumPages()
    
    for i in range (pageNumbers):
        pdf_writer = PdfFileWriter()
        pdf_writer.addPage(pdf_reader.getPage(i))
        split_motive = open('Sample_' + str(i+1) + '.pdf','wb')
        pdf_writer.write(split_motive)
        split_motive.close()
    
    pdf_file.close()
    

    【讨论】:

    • 我还建议为pdf_filesplit_motivewith open(...) as ...: 使用上下文管理器
    • 我已经尝试将pdf_writer = PdfFileWriter() 放入循环体中。但是后来我得到了这个很长的错误:_文件“C:\ Users \ Linda \ lib \ site-packages \ PyPDF2 \ pdf.py”,第557行,在_sweepIndirectReferences value = self._sweepIndirectReferences(externMap,data [i])文件“C:\Users\Linda\lib\site-packages\PyPDF2\pdf.py”,第 575 行,在 _sweepIndirectReferences 中,如果 data.pdf.stream.closed: AttributeError: 'PdfFileWriter' 对象没有属性 'stream' >> > _ 这只是最后几行。我没有经验的上下文管理器,但我会试一试。
    • 当我完全按照答案 1 中的建议进行操作时,只有我一个人会收到这个巨大的错误消息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2010-10-04
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多