You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用pdftk脚本将多页PDF拆分为单个单页PDF?

使用pdftk拆分多页PDF为单页文件的方案

快速拆分(无需脚本)

如果不需要自定义输出文件名,直接用pdftk的burst命令就能快速搞定:

pdftk 你的大型PDF文件.pdf burst

执行后会在当前目录生成一系列以pg_0001.pdf、pg_0002.pdf命名的单页PDF,同时会生成一个doc_data.txt文件记录原PDF的元数据。

自定义命名的脚本方案

要是你想让输出文件用更直观的命名(比如原文件名_0001.pdf这种格式),可以用下面的脚本:

Linux/macOS/WSL 下的 Bash 脚本

#!/bin/bash

# 检查是否传入了PDF文件参数
if [ $# -ne 1 ]; then
    echo "用法: $0 <要拆分的PDF文件路径>"
    exit 1
fi

INPUT_FILE="$1"
# 获取不带扩展名的原文件名
FILE_NAME=$(basename "$INPUT_FILE" .pdf)

# 读取PDF总页数
TOTAL_PAGES=$(pdftk "$INPUT_FILE" dump_data | grep NumberOfPages | awk '{print $2}')

# 循环提取每一页
for PAGE in $(seq 1 "$TOTAL_PAGES"); do
    # 把页码格式化为4位数字(比如1→0001,10→0010)
    PAGE_NUM=$(printf "%04d" "$PAGE")
    OUTPUT_FILE="${FILE_NAME}_${PAGE_NUM}.pdf"
    pdftk "$INPUT_FILE" cat "$PAGE" output "$OUTPUT_FILE"
    echo "已导出: $OUTPUT_FILE"
done

使用步骤:

  1. 把上面的内容保存为split_pdf.sh
  2. 给脚本添加执行权限:chmod +x split_pdf.sh
  3. 运行脚本:./split_pdf.sh 你的大型PDF文件.pdf

Windows 下的批处理脚本

@echo off
setlocal enabledelayedexpansion

:: 检查是否传入PDF文件
if "%~1"=="" (
    echo 用法: %0 要拆分的PDF文件路径
    exit /b 1
)

set "INPUT_FILE=%~1"
set "FILE_NAME=%~n1"

:: 获取PDF总页数
for /f "tokens=2" %%a in ('pdftk "%INPUT_FILE%" dump_data ^| findstr NumberOfPages') do set "TOTAL_PAGES=%%a"

:: 循环导出每一页
for /l %%p in (1,1,%TOTAL_PAGES%) do (
    :: 格式化页码为4位数字
    set "PAGE_NUM=000%%p"
    set "PAGE_NUM=!PAGE_NUM:~-4!"
    pdftk "%INPUT_FILE%" cat %%p output "%FILE_NAME%_!PAGE_NUM!.pdf"
    echo 已导出: %FILE_NAME%_!PAGE_NUM!.pdf
)

使用步骤:

  1. 保存为split_pdf.bat
  2. 双击运行,或者在命令行输入split_pdf.bat 你的大型PDF文件.pdf

注意事项

  • 确保已经安装pdftk:
    • Debian/Ubuntu 系:sudo apt install pdftk
    • macOS 可以用Homebrew安装:brew install pdftk-java(新版pdftk基于Java)
    • Windows 可以直接下载pdftk的二进制包安装

内容的提问来源于stack exchange,提问作者hornetster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:05:27