PDF拆分
官方脚本
可调用节点
v3.0.0
PDF拆分工具 | 支持单页拆分、页码范围拆分、固定页码拆分、按书签拆分四种模式,基于 pdfcpu,一键批量拆分到源文件同目录独立文件夹,支持右键、快捷键、定时任务与节点联动
脚本能力
直接启动支持
右键启动支持
快捷键启动支持
超级复制启动不支持
定时任务支持
可被其他脚本调用是
依赖其他脚本否
图形化启动界面支持
基于 pdfcpu 的 PDF 拆分脚本,支持单页、页码范围、固定页码、按书签章节四种拆分模式,一键批量拆分到源文件同目录的独立文件夹。
✨ 核心特性
- 单页拆分:每一页生成一个独立 PDF,适合逐页分发
- 页码范围拆分:按自定义区间拆分,如
1-3,4-8,9-20 - 固定页码拆分:在指定页码处切开,如
2,4,10→1 / 2-3 / 4-9 / 10-末尾 - 按书签拆分:按 PDF 书签章节拆分为多个文件
- 启动窗口自动生成:运行前由盒子弹出参数窗口,选择模式、填写页码范围等,无需额外安装组件
- 批量处理:支持同时选中多个 PDF 文件批量拆分
- 独立输出目录:每个源文件在其同目录下自动创建
{文件名}_拆分文件夹,可自定义名称 - 定时任务:支持通过盒子定时调度,无人值守自动拆分
- 节点联动:可作为节点被其他脚本调用,返回输出文件夹路径
脚本演示

安装方法
本脚本的运行环境、依赖组件及图形化参数窗口均依赖"不忙脚本盒子",建议仅通过盒子安装和使用本脚本。
前置条件:安装好 不忙脚本盒子
- 打开盒子 → 脚本市场 → 搜索 「PDF拆分」
- 点击「安装」
盒子会自动为脚本配置 python、pdfcpu 环境,无需人工干预。
使用方式
-
直接启动 / 右键 / 快捷键
- 在文件管理器中选中一个或多个 PDF 文件
- 右键点击 → 选择 「PDF拆分」(或按下全局快捷键)
- 盒子自动弹出启动窗口,选择拆分模式、填写页码范围/固定页码、输出文件夹名等参数
- 点击「执行」→ 命令行窗口展示逐文件拆分进度与结果
- 完成后倒计时 5 秒自动退出(按任意键立即退出)
-
定时任务
- 在盒子的定时任务中新建任务,选择 「PDF拆分」
- 在任务表单中选择源 PDF 文件、拆分模式及参数
- 设定触发时间,到点后盒子无人值守自动拆分,结果写入命令行输出
✅ 参数会在确认运行时自动记忆,下次打开启动窗口回填上次设置
💡 使用提示
- 按书签拆分:源 PDF 需要包含书签目录,无书签时拆分会失败并给出提示
- 页码范围:需从第 1 页开始、连续无间隔,pdfcpu 按完整文档拆分、无法跳过页面
- 固定页码:在这些页码之前切开,如
2,4,10得到1 / 2-3 / 4-9 / 10-末尾 - 覆盖说明:默认覆盖已存在的输出文件,关闭开关后遇到同名文件会跳过
节点脚本(开发者阅读)
本脚本声明了节点,可被其他盒子脚本通过 /api/link 联动调用。联动时按声明参数运行,返回信封:
{ "code": 0, "msg": "拆分完成,成功 2 个", "output_paths": ["D:/a_拆分", "D:/b_拆分"] }
调用方示例:
import json, sys, requests
payload = json.load(open(sys.argv[1], encoding="utf-8"))
env = payload["environment"]
r = requests.post(f"{env['api_base']}/api/link", json={
"script_id": "7a6646d2-fec1-4ddb-987f-56bf8c346433",
"data": {"target_paths": ["D:/a.pdf", "D:/b.pdf"]},
"params": {"mode": "single", "force": True},
}, timeout=3600)
body = r.json()
if not body.get("success"):
raise RuntimeError(body.get("message", "联动调用失败"))
if body["result"].get("code") != 0:
raise RuntimeError(body["result"].get("msg"))
print(body["result"]["output_paths"])
| 业务键 | 类型 | 说明 |
|---|---|---|
output_paths |
list | 成功拆分生成的输出文件夹绝对路径列表(与输入 PDF 一一对应) |
🖥️ 环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10+(64 位) |
| 运行环境 | Python 3.8+、pdfcpu(盒子自动安装) |
本脚本已声明为节点,可被其他脚本通过「不忙脚本盒子」机制调用。完整配置见下方 TOML,其他脚本若需调用请严格按此配置构造请求。
bm-scripts-box-rc.toml
[bmscriptsbox.info]
id = "7a6646d2-fec1-4ddb-987f-56bf8c346433"
name = "PDF拆分"
desc = "PDF拆分工具 | 支持单页拆分、页码范围拆分、固定页码拆分、按书签拆分四种模式,基于 pdfcpu,一键批量拆分到源文件同目录独立文件夹,支持右键、快捷键、定时任务与节点联动"
version = "3.0.0"
icon = "./imgs/img.png"
[bmscriptsbox.runtime]
language = "python"
language_version = ">=3.8"
entry = "main.py"
terminal = "always"
binaries = [{name = "pdfcpu"}]
[[bmscriptsbox.inputs]]
name = "target_paths"
label = "源文件"
type = "list"
pick = "files"
exts = [".pdf"]
description = "要拆分的 PDF 文件,可多选"
[[bmscriptsbox.params]]
name = "mode"
label = "拆分模式"
type = "str"
default = "single"
choices = ["single", "range", "page", "bookmark"]
choice_labels = { single = "单页拆分", range = "页码范围拆分", page = "固定页码拆分", bookmark = "按书签拆分" }
description = "选择拆分方式:单页、页码范围、固定页码或按书签章节"
[[bmscriptsbox.params]]
name = "ranges"
label = "页码范围"
type = "str"
default = "1-3,4-8,9-20"
when = { field = "mode", eq = "range" }
description = "按区间拆分,需从第 1 页开始、连续无间隔,如 1-3,4-8,9-20"
[[bmscriptsbox.params]]
name = "pages"
label = "固定页码"
type = "str"
default = "2,4,10"
when = { field = "mode", eq = "page" }
description = "在指定页码处切开,如 2,4,10 → 得到 1 / 2-3 / 4-9 / 10-末尾"
[[bmscriptsbox.params]]
name = "output_name"
label = "输出文件夹名"
type = "str"
default = ""
description = "在源 PDF 同目录下创建,留空自动用「{源文件名}_拆分」"
[[bmscriptsbox.params]]
name = "force"
label = "覆盖已存在文件"
type = "bool"
default = true
description = "拆分时覆盖已存在的输出文件"
[[bmscriptsbox.outputs]]
name = "output_paths"
type = "list"
description = "成功拆分生成的输出文件夹绝对路径列表(与输入 PDF 一一对应)"
[bmscriptsbox.node]
enabled = true
[bmscriptsbox.schedule]
enabled = true
[bmscriptsbox.params_form]
enabled = true
[bmscriptsbox.triggers.context_menu]
enabled = true
targets = ["files"]
filters = [".pdf"]
[bmscriptsbox.triggers.shortcut]
enabled = true
input_type = "files"
filters = [".pdf"]
免责声明
所有脚本由用户通过开源仓库自行发布。本站仅提供索引服务,"不忙脚本盒子"仅提供展示与安装服务。请在使用前仔细核实脚本内容,作者不对其安全性、准确性及适用性作任何保证。