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

使用GhostScript批量添加PDF页码失败,求助故障排查

批量为PDF添加“当前页/总页数”页码的问题排查与修复

问题背景

需要为约10万份PDF批量添加格式为“当前页/总页数”的页码,编写了批处理脚本和PostScript脚本,但执行后未生成目标文件,且无任何报错提示。

排查与修复步骤

1. 开启错误输出定位问题

原批处理命令中使用了-dQUIET参数,会屏蔽GhostScript所有输出信息,导致无法得知执行失败原因。立即移除该参数,重新执行脚本即可看到具体错误提示,快速定位问题。

2. 删除GhostScript命令的冗余配置

原命令中重复设置了字体和showpage钩子逻辑,会与PostScript脚本内的代码冲突,需删除以下冗余内容:

-c "/Times-Roman findfont 12 scalefont setfont" -c "/showpage {showpage /PageCount 1 add def} def"

3. 修复PostScript脚本的逻辑缺陷

原脚本仅显示当前页码,未实现“当前页/总页数”格式,且EndPage的触发条件错误(2 eq对应页面被中断的场景,并非正常分页)。修正后的脚本如下:

% 先获取文档总页数
/PageCount 0 def
{
  currentpagedevice /PageCount get
  dup PageCount gt { /PageCount exch def } if
} loop

/pageNum 1 def
<<
/EndPage {
  % 1 eq 表示当前页面正常结束
  1 eq {
    gsave
    % 设置灰色字体
    0.5 setgray
    /Times-Roman findfont 12 scalefont setfont
    % 定位到页面左下角(72单位=1英寸,36对应0.5英寸)
    72 36 moveto
    % 拼接当前页/总页数字符串并显示
    pageNum 40 string cvs ( / ) concat PageCount 40 string cvs concat show
    grestore
    % 页码自增
    /pageNum pageNum 1 add def
    true % 返回true表示继续处理后续页面
  } if
} bind
>> setpagedevice

4. 修正后的完整批处理脚本

@echo off
setlocal

REM 检查输入参数是否完整
if "%~1"=="" (
    echo 使用方法: %0 input.pdf output.pdf
    exit /b 1
)

if "%~2"=="" (
    echo 使用方法: %0 input.pdf output.pdf
    exit /b 1
)

REM 设置输入输出文件路径
set INPUT_PDF=%~1
set OUTPUT_PDF=%~2

REM 指定PostScript脚本路径
set PSF_SCRIPT="C:\Temp\GhostScript\AddPageNum.ps"
    
REM 执行GhostScript添加页码(添加-dNOSAFER确保脚本可被读取)
"C:\Program Files\gs\gs9.53.3\bin\gswin64c.exe" -o %OUTPUT_PDF% -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dPDFFitPage -dNOSAFER -f %INPUT_PDF% -f %PSF_SCRIPT%

endlocal
echo 页码已添加至 %OUTPUT_PDF%

批量处理优化建议(针对10万份PDF)

  • 编写文件夹遍历逻辑,自动批量处理目录下所有PDF,无需手动逐个输入参数
  • 确保C:\Temp\GhostScript目录存在,避免脚本找不到PostScript文件
  • 处理大体积PDF时,可添加-dPDFSETTINGS=/default参数平衡输出文件的大小与质量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:50:03