使用编程方法给PDF指定位置增加空白页

DeepSeek-V3 生成,2025-06-23T10:31:00Z

要在PDF文档的指定位置增加空白页,可以使用批处理命令结合PDF处理工具。以下是几种常见的方法:

单个文件

一、使用pdftk工具

  1. 首先安装pdftk工具(可以从 PDFtk - The PDF Toolkit 获取)

  2. 创建批处理文件( .bat )内容如下:

@echo off
setlocal

:: 参数设置
set input_pdf=input.pdf
set output_pdf=output.pdf
set insert_position=5  :: 在第5页后插入空白页
set blank_page=blank.pdf  :: 空白页文件

:: 分割原始PDF
pdftk %input_pdf% cat 1-%insert_position% output part1.pdf
pdftk %input_pdf% cat %insert_position%-end output part2.pdf

:: 合并并插入空白页
pdftk part1.pdf %blank_page% part2.pdf cat output %output_pdf%

:: 清理临时文件
del part1.pdf
del part2.pdf

echo 空白页已成功插入到指定位置

二、使用Ghostscript

  1. 安装Ghostscript(可以从 https://www.ghostscript.com/ 获取)

  2. 创建批处理文件:

@echo off
setlocal

:: 参数设置
set input_pdf=input.pdf
set output_pdf=output.pdf
set insert_position=5  :: 在第5页后插入空白页
set blank_page=blank.pdf  :: 空白页文件

:: 使用Ghostscript插入空白页
gswin64c -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress ^
-sOutputFile=%output_pdf% ^
"(1-%insert_position% %input_pdf%)" ^
"%blank_page%" ^
"(%insert_position%+1 -1 %input_pdf%)"

echo 空白页已成功插入到指定位置

三、使用Python和PyPDF2

需要安装Python。

  1. 创建批处理文件:
@echo off
setlocal

:: 参数设置
set input_pdf=input.pdf
set output_pdf=output.pdf
set insert_position=5  :: 在第5页后插入空白页

:: 使用Python脚本插入空白页
python -c "
from PyPDF2 import PdfReader, PdfWriter
reader = PdfReader('%input_pdf%')
writer = PdfWriter()
blank_page = PdfReader('blank.pdf').pages[0]

for i in range(len(reader.pages)):
    writer.add_page(reader.pages[i])
    if i == %insert_position%-1:  # 0-based index
        writer.add_page(blank_page)

with open('%output_pdf%', 'wb') as out:
    writer.write(out)
"

echo 空白页已成功插入到指定位置

注意事项

  1. 需要提前创建一个空白PDF文件( blank.pdf )作为空白页模板
  2. 插入位置是从1开始计数的
  3. 确保相关工具(pdftk、ghostscript或python)已正确安装并添加到系统PATH中
  4. 对于大型PDF文件,处理可能需要一些时间

您可以根据自己的需求选择最适合的方法,并调整批处理文件中的参数。

多个文件

如果您需要为当前文件夹中的所有PDF文件批量插入空白页,可以使用以下批处理脚本。我会提供几种方法的批量处理版本:

一、使用pdftk批量处理

@echo off
setlocal enabledelayedexpansion

:: 设置参数
set insert_position=5  :: 在第5页后插入空白页
set blank_page=blank.pdf  :: 空白页文件

:: 确保有空白页文件
if not exist "%blank_page%" (
    echo 错误:找不到空白页文件 %blank_page%
    pause
    exit /b 1
)

:: 创建输出文件夹
if not exist "output" mkdir output

:: 处理每个PDF文件
for %%f in (*.pdf) do (
    if not "%%f"=="%blank_page%" (
        echo 正在处理文件: %%f
        
        :: 分割原始PDF
        pdftk "%%f" cat 1-%insert_position% output part1.pdf
        pdftk "%%f" cat %insert_position%-end output part2.pdf
        
        :: 合并并插入空白页
        pdftk part1.pdf "%blank_page%" part2.pdf cat output "output\%%~nf_with_blank.pdf"
        
        :: 清理临时文件
        del part1.pdf
        del part2.pdf
        
        echo 已完成: %%~nf_with_blank.pdf
    )
)

echo 所有文件处理完成!
pause

二、使用Ghostscript批量处理

@echo off
setlocal enabledelayedexpansion

:: 设置参数
set insert_position=5  :: 在第5页后插入空白页
set blank_page=blank.pdf  :: 空白页文件

:: 确保有空白页文件
if not exist "%blank_page%" (
    echo 错误:找不到空白页文件 %blank_page%
    pause
    exit /b 1
)

:: 创建输出文件夹
if not exist "output" mkdir output

:: 处理每个PDF文件
for %%f in (*.pdf) do (
    if not "%%f"=="%blank_page%" (
        echo 正在处理文件: %%f
        
        :: 使用Ghostscript插入空白页
        gswin64c -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress ^
        -sOutputFile="output\%%~nf_with_blank.pdf" ^
        "(1-%insert_position% '%%f')" ^
        "'%blank_page%'" ^
        "(%insert_position%+1 -1 '%%f')"
        
        echo 已完成: %%~nf_with_blank.pdf
    )
)

echo 所有文件处理完成!
pause

三、使用Python批量处理

@echo off
setlocal

:: 设置参数
set insert_position=5  :: 在第5页后插入空白页
set blank_page=blank.pdf  :: 空白页文件

:: 创建输出文件夹
if not exist "output" mkdir output

:: 使用Python脚本批量处理
python -c "
from PyPDF2 import PdfReader, PdfWriter
import os

insert_pos = %insert_position%
blank_page_path = '%blank_page%'
output_dir = 'output'

if not os.path.exists(blank_page_path):
    print('错误:找不到空白页文件', blank_page_path)
    exit(1)

blank_page = PdfReader(blank_page_path).pages[0]

for filename in os.listdir('.'):
    if filename.lower().endswith('.pdf') and filename != os.path.basename(blank_page_path):
        print('正在处理:', filename)
        reader = PdfReader(filename)
        writer = PdfWriter()
        
        for i in range(len(reader.pages)):
            writer.add_page(reader.pages[i])
            if i == insert_pos-1:  # 0-based index
                writer.add_page(blank_page)
        
        output_path = os.path.join(output_dir, f'{os.path.splitext(filename)[0]}_with_blank.pdf')
        with open(output_path, 'wb') as out:
            writer.write(out)
        
        print('已完成:', output_path)

print('所有文件处理完成!')
"

pause

使用说明

  1. 将上述任一脚本保存为.bat文件(如batch_insert_blank.bat
  2. 确保:
    • 已安装相应工具(pdftk/Ghostscript/Python+PyPDF2)
    • 当前目录下有blank.pdf空白页文件
  3. 所有PDF文件必须不是只读的
  4. 处理后的文件会保存在output子文件夹中
  5. 脚本会自动跳过空白页文件本身

高级选项

如果要为不同文件设置不同的插入位置,可以创建一个CSV配置文件:

file1.pdf,3
file2.pdf,5
file3.pdf,2

然后修改脚本读取这个配置文件进行更灵活的处理。

您需要哪种更具体的调整?我可以根据您的需求进一步修改脚本。

最终选择方案,使用C#编写,使用PDFSharp工具处理PDF,源码地址:

laugh0608/PdfAddBlankPage: 使用 .NET8.0 写的一个在 PDF 中指定位置插入指定尺寸的空白页面的小程序。

使用截图:

这一版本我还添加了自定义空白页尺寸的功能。