python3 PDF分割工具 附代码和exe免安装文件

工具exe下载链接,免安装https://download.csdn.net/download/chl183/33191529

代码如下:

from appJar import gui
from PyPDF2 import PdfFileWriter, PdfFileReader
from pathlib import Path


def validate_inputs(input_file, output_dir, range, file_name):
    errors = False
    error_msgs = []

    # Make sure a PDF is selected
    if Path(input_file).suffix.upper() != ".PDF":
        errors = True
        error_msgs.append("请选择一个PDF输入文件")

    # Make sure a range is selected
    if len(range) < 1:
        errors = True
        error_msgs.append("请输入有效的页面范围")

    # Check for a valid directory
    if not (Path(output_dir)).exists():
        errors = True
        error_msgs.append("请选择一个有效的输出目录")

    # Check for a file name
    if len(file_name) < 1:
        errors = True
        error_msgs.append("请输入文件名")

    return (errors, error_msgs)


def split_pages(input_file, page_range, out_file):
    output = PdfFileWriter()
    input_pdf = PdfFileReader(open(input_file, "rb"))
    output_file = open(out_file, "wb")
    inpages = input_pdf.getNumPages()
    page_ranges = [x.split("-") for x in page_range.split(",")]
    # print(page_ranges)
    range_list = []
    while ['偶数页'] in page_ranges:
        range_list = [i for i in range(2, inpages + 1, 2)]
        page_ranges.remove(['偶数页'])
    while ['奇数页'] in page_ranges:
        range_list += [i for i in range(1, inpages + 1, 2)]
        page_ranges.remove(['奇数页'])
    try:
        range_list += [i for r in page_ranges for i in range(int(r[0]), int(r[-1]) + 1)]
    except:
        app.infoBox("信息", "范围输入错误。\n文件仍将被保存。\n(输出文件损坏)")
    range_list = list(set(range_list))
    range_list.sort()
    # print(range_list)

    for p in range_list:
        # Need to subtract 1 because pages are 0 indexed
        try:
            output.addPage(input_pdf.getPage(p - 1))
        except IndexError:
            # Alert the user and stop adding pages
            app.infoBox("信息", "范围超出输入中的页数。\n文件仍将被保存。")
            break
    output.write(output_file)

    if (app.questionBox("文件保存", "输出PDF已保存。你想退出吗?")):
        app.stop()


def press(button):
    if button == "开始":
        src_file = app.getEntry("输入文件")
        dest_dir = app.getEntry("输出位置")
        page_range = app.getEntry("页数范围")
        out_file = app.getEntry("输出名称")
        if out_file[-4:].upper() != ".PDF":
            out_file = out_file + ".pdf"
        errors, error_msg = validate_inputs(src_file, dest_dir, page_range, out_file)
        if errors:
            app.errorBox("错误", "\n".join(error_msg), parent=None)
        else:
            split_pages(src_file, page_range, Path(dest_dir, out_file))
    else:
        app.stop()


app = gui("PDF分割小工具", useTtk=True)
app.setTtkTheme("default")
app.setSize(500, 200)

app.addLabel("选择源PDF文件")
app.addFileEntry("输入文件")

app.addLabel("选择输出位置")
app.addDirectoryEntry("输出位置")

app.addLabel("输出文件名称")
app.addEntry("输出名称")

app.addLabel("页数范围: 1,3,4-10,奇数页,偶数页")
app.addEntry("页数范围")

app.addButtons(["开始", "退出"], press)

app.go()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 Python 的 PyPDF2 库来分割 PDF 文件。首先,你需要安装 PyPDF2: ``` pip install pypdf2 ``` 然后,你可以使用以下代码来读取 PDF 文件并将其分割成多个文件: ```python import os import PyPDF2 # 读取 PDF 文件 pdf_file = open('file.pdf', 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_file) # 获取 PDF 文件中的页数 num_pages = pdf_reader.numPages # 遍历每一页 for i in range(num_pages): # 创建一个新的 PDF 文件 output_pdf = PyPDF2.PdfFileWriter() # 将当前页加入新文件 output_pdf.addPage(pdf_reader.getPage(i)) # 使用文件名保存新文件(例如:file_1.pdf、file_2.pdf 等) with open('file_{}.pdf'.format(i+1), 'wb') as output_file: output_pdf.write(output_file) # 关闭原始 PDF 文件 pdf_file.close() ``` 这段代码会将原始 PDF 文件中的每一页分别保存到单独的新文件中。 注意:这段代码假设你已经有了一个名为 "file.pdf" 的 PDF 文件,并且你希望将其分割成多个新文件。如果你想分割的文件名称不同,请将 "file.pdf" 替换为你要分割的文件的名称。 ### 回答2: 要使用Python代码分割PDF文件,可以使用PyPDF2库来实现。下面是一个简单的示例代码: ```python import PyPDF2 # 打开源PDF文件 with open('source.pdf', 'rb') as file: pdf = PyPDF2.PdfFileReader(file) # 将每一页PDF文件分割 for page_num in range(pdf.getNumPages()): output_pdf = PyPDF2.PdfFileWriter() # 将当前页面添加到输出PDF文件中 page = pdf.getPage(page_num) output_pdf.addPage(page) # 保存当前页面的PDF文件 with open(f'output_{page_num}.pdf', 'wb') as output_file: output_pdf.write(output_file) ``` 上述代码首先打开源PDF文件(名为'source.pdf'),然后遍历源PDF文件的每一页。对于每一页,创建一个新的输出PDF文件(以当前页面的页码命名)。然后将当前页面添加到输出PDF文件中,并将输出PDF文件保存。 请注意,该示例代码需要PyPDF2库的支持。可以通过以下命令安装该库: ``` pip install PyPDF2 ``` 在运行代码之前,请确保将源PDF文件(名为'source.pdf')与代码放在同一目录下,并且目录中没有同名的输出PDF文件。运行代码后,将会生成以页码命名的多个输出PDF文件。 ### 回答3: 分割PDF文件是指将一个大的PDF文件按照指定的条件切分成多个小的PDF文件。在Python中,我们可以使用PyPDF2库来实现这个功能。 首先,我们需要安装PyPDF2库,在命令行中执行以下命令: ``` pip install PyPDF2 ``` 接下来,我们可以使用以下代码来实现PDF文件的分割: ```python import PyPDF2 # 打开原始PDF文件 with open('原始文件.pdf', 'rb') as file: # 创建一个PDF对象 pdf = PyPDF2.PdfFileReader(file) # 获取原始PDF文件的总页数 total_pages = pdf.getNumPages() # 定义每个小的PDF文件包含的页数 pages_per_file = 10 # 计算需要切分的小的PDF文件个数 num_files = total_pages // pages_per_file + 1 # 切分每个小的PDF文件 for i in range(num_files): # 创建一个新的PDF文件 output_pdf = PyPDF2.PdfFileWriter() # 定义切分开始和结束的页码 start_page = i * pages_per_file end_page = min((i+1) * pages_per_file, total_pages) # 将原始PDF文件的指定页码添加到新的PDF文件中 for page in range(start_page, end_page): output_pdf.addPage(pdf.getPage(page)) # 将切分后的PDF文件保存到磁盘上 with open(f'切分后文件{i+1}.pdf', 'wb') as output_file: output_pdf.write(output_file) ``` 上述代码首先打开原始的PDF文件,并根据需要切分的页数计算需要切分的小的PDF文件个数。然后,使用for循环依次切分每个小的PDF文件,并将切分后的结果保存到磁盘上。 在代码中,你需要将`原始文件.pdf`替换为你要分割PDF文件的文件名,将`切分后文件{i+1}.pdf`替换为你想要保存的切分后的文件的文件名。另外,你还可以根据需要修改`pages_per_file`参数来定义每个小的PDF文件包含的页数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值