分割/合并pdf


原文链接
对原版做了一些修改,运行 py文件就可以根据分割和合并的不同需求进行使用。

用法

1.将代码复制到txt文件中

# 导入读写pdf模块
from PyPDF2 import PdfFileReader, PdfFileWriter
import warnings
warnings.filterwarnings("ignore")
'''
注意:
页数从0开始索引
range()是左闭右开区间
'''

# pdf分割函数
def split_pdf(file_name, start_page, end_page, output_pdf):
    '''
    :param file_name:待分割的pdf文件名
    :param start_page: 执行分割的开始页数
    :param end_page: 执行分割的结束位页数
    :param output_pdf: 保存切割后的文件名
    '''
    # 读取待分割的pdf文件
    input_file = PdfFileReader(open(file_name, 'rb'))
    # 实例一个 PDF文件编写器
    output_file = PdfFileWriter()
    # 把分割的文件添加在一起
    for i in range(start_page, end_page):
        output_file.addPage(input_file.getPage(i))
    # 将分割的文件输出保存
    with open(output_pdf, 'wb') as f:
        output_file.write(f)

# pdf合并函数
def merge_pdf(merge_list, output_pdf):
    """
    merge_list: 需要合并的pdf列表
    output_pdf:合并之后的pdf名
    """
    # 实例一个 PDF文件编写器
    output = PdfFileWriter()
    for ml in merge_list:
        pdf_input = PdfFileReader(open(ml, 'rb'))
        page_count = pdf_input.getNumPages()
        for i in range(page_count):
            output.addPage(pdf_input.getPage(i))
    output.write(open(output_pdf, 'wb'))

# pdf分割交互函数
def split_pdf_hci():
    # 此处改为pdf名称
    title = input("请输入需要分割的pdf名称:")
    if (title[-4:] != ".pdf"):
        title += ".pdf"
    # 此处改为页码数
    page = int(input("请输入pdf页码数:"))
    # 分割间隔
    interval = int(input("请输入页码分割间隔数:"))
    # 分割pdf
    for i in range(0, page, interval):
        pdf_name = str(i + 1) + "-" + str(i + interval) + ".pdf"
        split_pdf(title, i, i + interval, pdf_name)

# pdf合并交互函数
def merge_pdf_hci():
    pdf_list = []
    b = "y"
    name = input("请输入需要合并pdf名称:")
    if (name[:-3] != ".pdf"):
        name += ".pdf"
    while b == "y":
        b = input("是否还有需要合并的pdf(y/n):")
        name = input("请输入pdf名称:")
        if (name[:-3] != ".pdf"):
            name += ".pdf"
        pdf_list.append(name)
    print("合并pdf将会命名为:合并.pdf")
    merge_pdf(pdf_list, "合并.pdf")

if __name__ == '__main__':
    choice = input("如果需要分割请输入1,如果需要合并请输入2:")
    if (choice == "1"):
        # 分割pdf
        split_pdf_hci()
    elif (choice == "2"):
        # 合并pdf (如果需要合并)
        merge_pdf_hci()

2. 将txt改名为pdf_split.py

在这里插入图片描述

3. 将pdf与py都放在桌面上(或同一文件夹下)

在这里插入图片描述

4. 打开powershell,cd到文件路径

cd D:\桌面
在这里插入图片描述

5. 安装PyPDF2

pip install PyPDF2
在这里插入图片描述

6. 运行文件,根据提示输入

python pdf_split.py
在这里插入图片描述

7. 分割结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用 PyPDF2 库来实现 PDF分割合并。 首先需要安装 PyPDF2,可以使用以下命令进行安装: ``` pip install PyPDF2 ``` 接下来就可以开始实现分割合并功能了。 ## PDF 分割 PDF 分割可以将一个 PDF 文件拆分成多个单独的文件,可以按照页面数或者指定的页面进行拆分。 以下是一个简单的分割示例,将一个 PDF 文件按照每两页分割成一个文件: ```python import os from PyPDF2 import PdfFileReader, PdfFileWriter def split_pdf(input_path): with open(input_path, 'rb') as input_pdf: input_pdf_reader = PdfFileReader(input_pdf) output_pdf_writer = PdfFileWriter() for i in range(input_pdf_reader.getNumPages()): if i % 2 == 0: output_pdf_writer.addPage(input_pdf_reader.getPage(i)) with open(f'{os.path.splitext(input_path)[0]}_{i//2}.pdf', 'wb') as output_pdf: output_pdf_writer.write(output_pdf) output_pdf_writer = PdfFileWriter() else: output_pdf_writer.addPage(input_pdf_reader.getPage(i)) if input_pdf_reader.getNumPages() % 2 != 0: with open(f'{os.path.splitext(input_path)[0]}_{input_pdf_reader.getNumPages()//2}.pdf', 'wb') as output_pdf: output_pdf_writer.write(output_pdf) ``` 以上代码将每两页作为一组,将其拆分成多个文件。拆分后的文件名为原文件名加上下划线和组数,例如 `input_0.pdf`、`input_1.pdf` 等。 ## PDF 合并 PDF 合并可以将多个 PDF 文件合并成一个文件。 以下是一个简单的合并示例,将多个 PDF 文件合并成一个文件: ```python from PyPDF2 import PdfFileMerger def merge_pdf(input_paths, output_path): pdf_merger = PdfFileMerger() for input_path in input_paths: with open(input_path, 'rb') as input_pdf: pdf_merger.append(input_pdf) with open(output_path, 'wb') as output_pdf: pdf_merger.write(output_pdf) ``` 以上代码将所有输入的 PDF 文件按照顺序合并成一个文件,并保存到指定的输出文件中。 以上就是使用 PyPDF2 实现 PDF 分割合并的简单示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失眠软糖12

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值