PyPDF2按页面拆分pdf

天守

我想使用PyPDF2拆分pdf文件。

net中的所有示例都太困难或无法正常工作,或始终出现错误“ AttributeError:'PdfFileWriter'对象没有属性'stream'”

有人可以帮忙吗?需要将3页的一份pdf分隔成三个不同的文件。

我从那开始:

pdfFileObj = open(r"D:\BPO\act.pdf", 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pdfWriter = PyPDF2.PdfFileWriter()
pdfWriter.addPage(pdfReader.getPage(0))

但是不知道下一步该怎么做:(

编辑#1

试图做一个循环分割,我有一个问题:PdfFileWriter制作3个文件,一个一页,第二个-两个,第三个三个。我在以下代码中的错误在哪里:

act_sub_pages_name = ['p01.pdf', 'p02.pdf', 'p03.pdf']
with open(r"D:\BPO\act.pdf", 'rb') as act_mls:
    reader = PdfFileReader(act_mls)
    writer = PdfFileWriter()
    if reader.numPages == 3:
        counter = 0
        for x in range(3):
            path = '\\'.join(['D:\\BPO\\act sub pages', act_sub_pages_name[counter]])
            counter += 1
            writer.addPage(reader.getPage(x))
            with open(path, 'wb') as outfile: writer.write(outfile)

不好意思英语。

编辑#2

Paul Rooney提供的解决方案回答:

act_pdf_file = 'D:\\BPO\\act.pdf'
act_sub_pages_name = ['p01.pdf', 'p02.pdf', 'p03.pdf']

def pdf_splitter(index, src_file):
    with open(src_file, 'rb') as act_mls:
        reader = PdfFileReader(act_mls)
        writer = PdfFileWriter()
        writer.addPage(reader.getPage(index))
        out_file = os.path.join('D:\\BPO\\act sub pages', act_sub_pages_name[index])
        with open(out_file, 'wb') as out_pdf: writer.write(out_pdf)

for x in range(3): pdf_splitter(x, act_pdf_file)

有了功能,所有功能都可以正常工作,但是会有点困难。

保罗·鲁尼

您可以使用的write方法将PdfFileWriter其写出到文件中。

from PyPDF2 import PdfFileReader, PdfFileWriter

with open("input.pdf", 'rb') as infile:

    reader = PdfFileReader(infile)
    writer = PdfFileWriter()
    writer.addPage(reader.getPage(0))

    with open('output.pdf', 'wb') as outfile:
        writer.write(outfile)

您可能想要遍历输入文件的页面,创建一个新的writer对象,添加一个页面。然后写出一个不断增加的文件名或使用其他方案确定输出文件名?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章