PDF自定义拆分脚本


前言

一、准备搞起来!

今天搞一个“pdf一键自定义拆分脚本”,PDF格式因其良好的跨平台兼容性和视觉保真度而广受欢迎。然而,在处理大量或复杂的PDF文件时,需提取部分页面进行分享、编辑或打印,这就催生了对PDF拆分及自定义合并功能的强烈需求,为了快速的拆分指定的页的内容,用python写了一个小脚本。

二、导入库

1.引入库

第一步当然是先把需要的库统统导进去。(注意,有一些库的版本会有一些区别,如果导致报错的话,可以检查下是不是库的版本不太对。)

import os
import tkinter as tk
from tkinter import filedialog, simpledialog, messagebox
from PyPDF2 import PdfReader, PdfWriter

2.执行逻辑代码

下面是处理PDF文件代码:

def split_pdf():
    file_path = entry.get()
    if not file_path:
        messagebox.showerror("错误", "请先选择一个PDF文件")
        return

    mode = var.get()
    merge_mode = merge_var.get()
    pages = None

    if mode == "custom":
        input_pages = simpledialog.askstring("输入页码", "请输入要拆分的页码(例如:1, 3-5, 7)")
        if input_pages:
            pages = []
            parts = input_pages.split(',')
            for part in parts:
                if '-' in part:
                    start, end = map(int, part.split('-'))
                    pages.extend(range(start, end + 1))
                else:
                    pages.append(int(part))
        else:
            return

    # 拆分PDF
    if not os.path.exists(file_path):
        messagebox.showerror("错误", "文件路径不存在,请检查后重试。")
        return

    reader = PdfReader(file_path)
    output_folder = os.path.join(os.path.dirname(file_path), "拆分文件夹")
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    if pages is None:
        pages = list(range(1, len(reader.pages) + 1))

    if merge_mode == "merge":
        writer = PdfWriter()
        for page_number in pages:
            if page_number > len(reader.pages):
                continue
            writer.add_page(reader.pages[page_number - 1])
        output_filename = f"{os.path.splitext(os.path.basename(file_path))[0]}_合并.pdf"
        output_path = os.path.join(output_folder, output_filename)
        with open(output_path, "wb") as output_pdf:
            writer.write(output_pdf)
    else:
        for page_number in pages:
            if page_number > len(reader.pages):
                continue
            writer = PdfWriter()
            writer.add_page(reader.pages[page_number - 1])
            output_filename = f"{os.path.splitext(os.path.basename(file_path))[0]}_{page_number}.pdf"
            output_path = os.path.join(output_folder, output_filename)
            with open(output_path, "wb") as output_pdf:
                writer.write(output_pdf)

    messagebox.showinfo("完成", "PDF拆分完成。")

3.简易前端的GUI界面

root = tk.Tk()
root.title("PDF 拆分工具")

tk.Label(root, text="选择PDF文件:").pack(side=tk.TOP, pady=10)

entry = tk.Entry(root, width=50)
entry.pack(side=tk.TOP, padx=20)

tk.Button(root, text="浏览", command=select_file).pack(side=tk.TOP, pady=10)
var = tk.StringVar(value="all")
merge_var = tk.StringVar(value="separate")
tk.Radiobutton(root, text="拆分所有页面", variable=var, value="all").pack(side=tk.TOP, anchor=tk.W, padx=20)
tk.Radiobutton(root, text="自定义页码拆分", variable=var, value="custom").pack(side=tk.TOP, anchor=tk.W, padx=20)
tk.Radiobutton(root, text="拆分成单独的PDF", variable=merge_var, value="separate").pack(side=tk.TOP, anchor=tk.W, padx=20)
tk.Radiobutton(root, text="合并成一个PDF", variable=merge_var, value="merge").pack(side=tk.TOP, anchor=tk.W, padx=20)
tk.Button(root, text="开始拆分", command=split_pdf).pack(side=tk.TOP, pady=20)
root.mainloop()

总结

PDF自定义快速拆分脚本,操作便捷高效,功能全面实用。它不仅能将任意多页的PDF文档一键拆分成多个独立的单页PDF文件,让每一页内容都能单独保存、自由分享;同时,还支持灵活自定义拆分模式,随心所欲地选择需要拆分的指定页面,并将其合并输出为新的PDF文件。无论是整理学习资料、优化工作文档,还是个性化编辑,都将为您提供前所未有的便利体验,提升工作效率,尽享自由拆分与合并的乐趣!在这里插入图片描述

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值