python保留PDF指定页,删除其他多余页

python保留PDF指定页,删除其他多余页

最近整理个文档,有这个需要。然后看到有博主写了,但是因为使用的PyPDF2==3.0.1。有一些细节差异,就调整了一下一并发出来了。
链接: python删除PDF指定页数
链接: python删除pdf指定页的方法

import PyPDF2

def keep_pdf_page_only(input_path, output_path, page_number, page_end_number):
    with open(input_path, 'rb') as input_file:
        reader = PyPDF2.PdfReader(input_file)
        writer = PyPDF2.PdfWriter()

        num_pages = len(reader.pages)

        if page_number < 1 or page_number > num_pages or page_end_number > num_pages:
            print(f"Invalid page number. The PDF file has {num_pages} pages.")
            return

        # 仅添加指定的页面到输出文件中
        # page = reader.pages[page_number]
        # writer.add_page(page)

        if page_number > page_end_number:
            page_end_number = page_number

        # 添加多页面到输出文件中
        for current_page in range(page_number - 1, page_end_number):
            page = reader.pages[current_page]
            writer.add_page(page)

        with open(output_path, 'wb') as output_file:
            writer.write(output_file)

        print(f"Page {page_number} to {page_end_number} kept successfully, and all other pages deleted.")

# 示例用法
input_path = 'input.pdf'  # 输入PDF文件路径
output_path = 'output.pdf'  # 输出PDF文件路径
page_start_to_keep = 10  # 要保留的开始页码(从第1页开始)
page_end_to_keep = 15  # 要保留的结束页码

keep_pdf_page_only(input_path, output_path, page_start_to_keep, page_end_to_keep)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要批量删除PDF文件中的指定页,我们可以使用Python中的PyPDF2库来实现。 首先,我们需要安装PyPDF2库。可以使用以下命令在终端中安装: ``` pip install PyPDF2 ``` 在安装完库之后,我们可以通过以下代码来实现批量删除PDF指定页: ```python import os from PyPDF2 import PdfReader, PdfWriter def delete_pages(input_file, output_file, pages): # 创建一个PdfReader对象,读取输入的PDF文件 pdf_reader = PdfReader(input_file) # 创建一个PdfWriter对象来写入输出的PDF文件 pdf_writer = PdfWriter() # 遍历输入PDF的每一页 for page_num in range(len(pdf_reader.pages)): # 如果当前页不在要删除的页列表中,则将该页添加到PdfWriter中 if page_num not in pages: page = pdf_reader.pages[page_num] pdf_writer.add_page(page) # 将PdfWriter的内容写入到输出的PDF文件中 with open(output_file, "wb") as f: pdf_writer.write(f) # 关闭PdfReader和PdfWriter对象 pdf_reader.close() pdf_writer.close() # 指定删除的页码列表,比如要删除第2页和第4页,可以设置为[1, 3] pages_to_delete = [1, 3] # 指定输入的PDF文件路径和输出的PDF文件路径 input_pdf = "input.pdf" output_pdf = "output.pdf" # 调用函数进行批量删除指定页 delete_pages(input_pdf, output_pdf, pages_to_delete) ``` 在上述代码中,我们传入输入的PDF文件路径、输出的PDF文件路径以及要删除的页码列表。代码会读取输入的PDF文件,逐页检查是否在要删除的页码列表中,然后将不需要删除的页码添加到PdfWriter中。最后,将PdfWriter的内容写入到输出的PDF文件中。 请注意,上述代码适用于PyPDF2库的旧版本。如果您使用的是新版本的PyPDF2,代码可能需要进行一些更改。另外还需要注意的是,PyPDF2库有一些限制和局限性,对于某些特定的PDF文件可能无法正常工作。如有需要,您可以尝试其他的PDF处理库。 ### 回答2: 想要批量删除PDF文件中的指定页,可以使用Python的PyPDF2模块来实现。以下是一个示例代码: ```python import PyPDF2 def delete_pages(input_pdf, output_pdf, pages_to_delete): input_file = open(input_pdf, 'rb') pdf = PyPDF2.PdfReader(input_file) output_file = open(output_pdf, 'wb') writer = PyPDF2.PdfWriter() for page_num in range(pdf.numPages): if page_num+1 not in pages_to_delete: writer.addPage(pdf.getPage(page_num)) writer.write(output_file) input_file.close() output_file.close() # 调用示例 delete_pages('input.pdf', 'output.pdf', [3, 5, 7]) ``` 在这个例子中,我们首先导入了PyPDF2模块。`delete_pages`函数接收三个参数,input_pdf表示输入的PDF文件路径,output_pdf表示输出的PDF文件路径,pages_to_delete是一个列表,包含需要删除的页面的页码。 在函数内部,我们首先打开输入PDF文件,并使用`PdfReader`函数创建一个PdfReader对象。然后,我们打开输出的PDF文件,使用`PdfWriter`创建一个PdfWriter对象。 接下来,我们遍历输入PDF的所有页面,如果当前页面不在需要删除的页码列表中,就将该页面添加到输出的PDF文件中。最后,使用`write`函数将结果写入输出文件。 最后示例代码中的调用部分,我们将输入PDF文件设置为"input.pdf",输出PDF文件设置为"output.pdf",并指定需要删除的页面为第3、5和7页。 ### 回答3: 使用Python进行批量删除PDF指定页的操作可以借助PyPDF2库。下面是一个简单的代码示例,以帮助您理解如何实现此功能: 首先,确保您已经安装了PyPDF2库。如果没有安装,可以通过在命令提示符中运行以下命令来安装: pip install PyPDF2 然后,可以使用以下代码删除指定页: ```python from PyPDF2 import PdfFileWriter, PdfFileReader def delete_pages(input_pdf, output_pdf, pages): input_file = PdfFileReader(input_pdf) output_file = PdfFileWriter() for page_number in range(input_file.numPages): if page_number not in pages: output_file.addPage(input_file.getPage(page_number)) with open(output_pdf, 'wb') as f: output_file.write(f) # 示例用法: input_pdf = 'input.pdf' output_pdf = 'output.pdf' pages_to_delete = {2, 4, 6} # 要删除的页码,以集合形式提供 delete_pages(input_pdf, output_pdf, pages_to_delete) ``` 在上述示例中,我们定义了一个名为`delete_pages`的函数,该函数接受输入PDF文件的路径、输出PDF文件的路径以及要删除的页码列表。函数使用`PdfFileReader`读取输入PDF文件,然后使用`PdfFileWriter`创建一个新的PDF文件对象。接下来,函数遍历输入PDF的所有页码,并检查当前页码是否在要删除的页码列表中。如果不在列表中,则将该页码添加到输出PDF文件中。最后,将输出的PDF内容写入到指定的输出PDF文件中。 请注意,页码是从0开始计数。在示例中,我们要删除的页码是第2、4和6页,因此相应地设置了`pages_to_delete`变量。 希望这个简单的示例对您有所帮助,如果您需要更复杂的操作,可以参考PyPDF2文档进行扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值