使用python将多页pdf文件拆分为多个pdf文件?

使用python将多页pdf文件拆分为多个pdf文件?,python,pdf,Python,Pdf,我想采取多页pdf文件,并创建单独的pdf文件每页 我已经下载并浏览了文档,但它似乎旨在生成pdf。我还没有看到任何关于处理PDF文件的内容 在python中有没有一种简单的方法可以做到这一点 from PyPDF2 import PdfFileWriter, PdfFileReader inputpdf = PdfFileReader(open("document.pdf", "rb")) for i in range(inputpdf.numPages): output = Pd

我想采取多页pdf文件,并创建单独的pdf文件每页

我已经下载并浏览了文档,但它似乎旨在生成pdf。我还没有看到任何关于处理PDF文件的内容

在python中有没有一种简单的方法可以做到这一点

from PyPDF2 import PdfFileWriter, PdfFileReader

inputpdf = PdfFileReader(open("document.pdf", "rb"))

for i in range(inputpdf.numPages):
    output = PdfFileWriter()
    output.addPage(inputpdf.getPage(i))
    with open("document-page%s.pdf" % i, "wb") as outputStream:
        output.write(outputStream)

等等。

我在这里错过了一个解决方案,您将PDF拆分为包含所有页面的两部分,因此,如果有人在寻找相同的解决方案,我会附加我的解决方案:

from PyPDF2 import PdfFileWriter, PdfFileReader

def split_pdf_to_two(filename,page_number):
    pdf_reader = PdfFileReader(open(filename, "rb"))
    try:
        assert page_number < pdf_reader.numPages
        pdf_writer1 = PdfFileWriter()
        pdf_writer2 = PdfFileWriter()

        for page in range(page_number):
            pdf_writer1.addPage(pdf_reader.getPage(page))

        for page in range(page_number,pdf_reader.getNumPages()):
            pdf_writer2.addPage(pdf_reader.getPage(page))

        with open("part1.pdf", 'wb') as file1:
            pdf_writer1.write(file1)

        with open("part2.pdf", 'wb') as file2:
            pdf_writer2.write(file2)

    except AssertionError as e:
        print("Error: The PDF you are cutting has less pages than you want to cut!")
从PyPDF2导入PdfileWriter、PdfileReader
def拆分为两页(文件名、页码):
pdf_reader=PdfileReader(打开(文件名为“rb”))
尝试:
断言页码
我知道这段代码与python无关,但是我想发布这段R代码,它简单、灵活,工作起来令人惊讶。R中的PDFtools包在轻松拆分和合并PDF方面非常出色

library(pdftools) #Rpackage
pdf_subset('D:\\file\\20.02.20\\22 GT 2017.pdf',
           pages = 1:51, output = "subset.pdf")

PyPDF2包使您能够将单个PDF拆分为多个PDF

import os
from PyPDF2 import PdfFileReader, PdfFileWriter

pdf = PdfFileReader(path)
for page in range(pdf.getNumPages()):
    pdf_writer = PdfFileWriter()
    pdf_writer.addPage(pdf.getPage(page))

    output_filename = '{}_page_{}.pdf'.format(fname, page+1)

    with open(output_filename, 'wb') as out:
        pdf_writer.write(out)

    print('Created: {}'.format(output_filename))

来源:

@user26294:您可能应该更新代码以使用PyPDF2,PyPDF2是pyPdf的主动维护的后续版本。只需将pyPdf导入中的
替换为PyPDF2导入中的
pyPdf不再维护,已通过用户
上的PyPDF2实现接管,并打开(“文档页%s.pdf”%(i+1),“wb”)作为outputStream:
如果您希望使用从1开始而不是从0开始的索引命名文件。如果您在字典中的字节处有多个定义,则可以将输入pdf变量修改为:
pdf=PdfileReader(open(“document.pdf”,“rb”),strict=False)
此处页数是硬编码的。是否要自动执行此操作?添加页码选择并将其包装在函数中: