Windows下如何用pdfmark/GhostScript让PDF仅显示前两级书签?
批量控制PDF书签默认显示前两级的命令行方案(Windows)
核心原理
Adobe pdfmark的/Count属性是控制书签默认展开状态的关键:
- 正数:书签默认展开,自动显示所有子项
- 负数:书签默认折叠,自动隐藏所有子项
要实现打开PDF时仅显示前两级,只需给第二级书签设置/Count -N(N为该二级下的三级书签数量),让第三级书签默认处于折叠状态即可。
方案1:修改书签生成脚本(推荐,精准可控)
如果你是通过pdfmark脚本生成三级书签,直接修改脚本里的二级书签/Count值:
- 找到你的书签生成文件(比如
bookmarks.txt),二级书签的配置行通常类似:
把[/Title "二级标题1" /Page 5 /Count 3 /OUT pdfmark]/Count 3改成/Count -3,该二级下的3个三级书签就会默认折叠。 - 用PowerShell批量修改当前目录下所有pdfmark文件:
Get-Content *.pdfmark | ForEach-Object { $_ -replace '/Count (\d+)', '/Count -$1' } | Set-Content "modified_$($_.Name)" - 用GhostScript将修改后的pdfmark应用到合并好的PDF:
"C:\Program Files\gs\gs10.02.1\bin\gswin64c.exe" -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=final_merged.pdf merged.pdf modified_bookmarks.pdfmark - 批量处理多文件的批处理脚本(
batch_process.bat):@echo off setlocal enabledelayedexpansion set GS_PATH="C:\Program Files\gs\gs10.02.1\bin\gswin64c.exe" for %%f in (merged_*.pdf) do ( set BM_FILE=%%~nf.pdfmark powershell -Command "(Get-Content !BM_FILE!) -replace '/Count (\d+)', '/Count -$1' | Set-Content modified_!BM_FILE!" !GS_PATH! -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=final_%%~nf.pdf %%f modified_!BM_FILE! del modified_!BM_FILE! )
方案2:直接修改已有三级书签的PDF
如果已经生成了带三级书签的PDF,不想修改原脚本,用PostScript脚本批量调整:
- 创建
collapse_level3.ps文件,内容如下:% 递归遍历书签,将二级书签的子项设为默认折叠 /ProcessBookmark { 2 dict begin /next exch def /bk exch def bk /Kids get dup null ne { dup length 0 gt { bk /Count get dup 0 gt { bk /Count exch neg put } if {ProcessBookmark} forall } if } if next null ne {next ProcessBookmark} if end } bind def [{Catalog} /Outlines get ProcessBookmark] pdfmark [/DOCVIEW /PageMode /UseOutlines pdfmark - 批量处理的批处理脚本:
@echo off set GS_PATH="C:\Program Files\gs\gs10.02.1\bin\gswin64c.exe" for %%f in (*_full_bookmarks.pdf) do ( !GS_PATH! -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=final_%%~nf.pdf %%f collapse_level3.ps )
注意事项
- 请将GhostScript路径调整为你实际安装的版本路径(比如
gs9.55.0)。 - 方案1的正则替换仅针对二级书签
/Count为正数的场景,若你的书签格式特殊,需微调正则表达式。 - 建议先拿单个文件测试效果,再执行批量处理。
内容的提问来源于stack exchange,提问作者abhijeet
相关产品推荐
相关产品推荐

