【问题标题】:Split specific pages of PDF and save it with Python拆分 PDF 的特定页面并使用 Python 保存
【发布时间】:2019-08-31 19:52:05
【问题描述】:

我正在尝试将 20 页 pdf 文件(单个)拆分为五个各自的 pdf 文件,第一个 pdf 包含 1-3 页,第二个 pdf 文件仅包含第 4 页,第 3 个 pdf 包含 5 到 10 页,第 4 个 pdf 包含11-17 页,第 5 个 pdf 包含 18-20 页。我需要python中的工作代码。下面提到的代码将整个 pdf 文件拆分为单个页面,但我想要分组页面..

    from PyPDF2 import PdfFileWriter, PdfFileReader
    inputpdf = PdfFileReader(open("input.pdf", "rb"))
    for i in range(inputpdf.numPages):
    j = i+1    
    output = PdfFileWriter()
    output.addPage(inputpdf.getPage(i))
    with open("page%s.pdf" % j, "wb") as outputStream:
    output.write(outputStream)

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    对我来说,使用这个example from GitHub 看起来像是pdfrw 的任务,我编写了以下示例代码:

    from pdfrw import PdfReader, PdfWriter
    pages = PdfReader('inputfile.pdf').pages
    parts = [(3,6),(7,10)]
    for part in parts:
        outdata = PdfWriter(f'pages_{part[0]}_{part[1]}.pdf')
        for pagenum in range(*part):
            outdata.addpage(pages[pagenum-1])
        outdata.write()
    

    这会创建两个文件:pages_3_6.pdfpages_7_10.pdf,每个文件有 3 页,即 3、4、5 和 7、8、9。注意代码中的pagenum-1,使用-1是因为pdf页面编号从1而不是0开始。我还使用所谓的 f 字符串来获取输出文件的名称。在我看来,这是一种巧妙的方法,但它在 Python2 中不可用,我不确定它是否在所有 Python3 版本中都可用(我在 3.6.7 中测试了我的代码),所以如果你愿意,你可以使用旧的格式化方法。 请记住根据您的需要更改文件名和范围。

    【讨论】:

    • parts = [(1,3),(4),(5,10),(11,17),(18,20)] 部分:outdata = PdfWriter(f' pages_{part[0]}_{part[1]}.pdf') for pagenum in range(*part): outdata.addpage(pages[pagenum-1]) outdata.write() 拆分代码不适用于以上案例请帮忙。
    • @SutirthaThakur: parts 必须是 list 的 2-tuples 所以 (4) 是不合法的。您应该改用(4,5)。另请记住,(1,3) 表示第 1,2 页,(4,5) 表示第 4 页。
    • parts = [(1,4),(4,5),(5,10),(10,20)] 当我输入这个时,我得到 IndexError: list index out of range
    • @SutirthaThakur:请检查您的 .pdf 文件是否真的有这么多页,我没有看到任何其他可能的原因 IndexError
    • 只有20页
    【解决方案2】:

    如果你有python 3,你可以根据下面的答案在这里使用tika:

    How to extract text from a PDF file?

    【讨论】:

    • 我要分页,然后我要提取
    • @SutirthaThakur Here 就是你要找的。​​span>
    • 我想分页,只需要选择的页面,如果可能的话分享代码。
    猜你喜欢
    • 2019-01-05
    • 2017-02-13
    • 2017-10-21
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2020-10-02
    相关资源
    最近更新 更多