【问题标题】:Renaming last page using pyPDF2使用 pyPDF2 重命名最后一页
【发布时间】:2021-06-25 11:44:47
【问题描述】:

我正在使用 pyPDF2 库和这个脚本:

导入操作系统 从 PyPDF2 导入 PdfFileReader、PdfFileWriter

def pdf_splitter(路径): fname = os.path.splitext(os.path.basename(path))[0]

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))

如果 name == 'ma​​in': 路径 = 'w9.pdf' pdf_splitter(路径)

这只是一个示例,它读取包含多个页面的原始 PDF 并拆分为单独的文件。它在拆分的文件上添加页码:

例如。原始PDF名称:w9.pdf 拆分为:w9_01_01.pdf,w9_01_02.pdf,w9_01_03.pdf

我需要将最后一个拆分的 pdf 重命名为 w9_01_end.pdf 而不是 w9_01_03.pdf 我知道使用 getNumPages() 您可以获得原始 pdf 的总页数,但不知道如何检测最后一个并命名不同。也可以使用 getPage 获取当前页面。

我们将不胜感激。

【问题讨论】:

    标签: python pypdf2


    【解决方案1】:

    如果我理解正确的问题,您可以添加 if 语句来检查您是否正在创建最后一页:

    if page != pdf.getNumPages()-1: #for loop works from [0;x[
          output_filename = '{}_page_{}.pdf'.format(
              fname, page+1)
        else:
          output_filename = '{}_page_end.pdf'.format(
              fname)
    

    【讨论】:

    • 谢谢 zanga,我已经测试了你的代码,但最终的结果是总是生成 _end 文件。 “事情”是,如果 pdf 有 3 页,则脚本必须将 3 页拆分为单独的文件,但生成的最后一个文件必须以 _end.pdf 标志结尾。
    • 我找到了一种方法,而不是创建和重命名,第一次调用 for page in range(pdf.getNumPages()):我添加了 for page in range(pdf.getNumPages()- 1):所以总是会生成最后一页-1。然后我把这段代码放在下面 lastpage = pdf.getPage(pdf.getNumPages() - 1) pdf_writer = PdfFileWriter() pdf_writer.addPage(lastpage) 这样得到数组的最后一页,生成最后一个pdf(03)。跨度>
    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2020-09-03
    • 2021-04-21
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多