返回列表 发帖
批处理调用pdftk.exe给pdf文件逐页添加书签
@echo off
rem "批处理调用pdftk给无书签的pdf文件按照 书签文本每一行对应pdf每一页 添加书签(如果某页不需要书签,则书签文本对应行留空)"
rem "批处理和书签文本全部保存为utf-8编码,pdftk添加到环境变量,书签文本格式txt,与pdf文件同名"
chcp 65001 >nul
cd /d "%~dp0"
for /f "delims=" %%i in ('dir /b /a-d *.pdf') do (
if exist "%%~ni.txt" (
pdftk "%%i" dump_data_utf8 output |find "BookmarkTitle:" 1>nul
if errorlevel 1 (
(for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%%~ni.txt"') do (
if "%%b" neq "" (
echo BookmarkBegin
echo BookmarkTitle: %%b
echo BookmarkLevel: 1
echo BookmarkPageNumber: %%a
)
))>report.txt
pdftk "%%i" update_info_utf8 report.txt output "%%~ni_new.pdf"
)
) else (
echo 未找到文本 [%%~ni.txt]
)
)
del report.txt 2>nul
pauseCOPY
bat小白,请多指教!谢谢!

TOP

回复 17# ppll2030


   6、7行的两种方式,%1会改变工作路径,而set /p却不会,%1含有空格加引号,而set /p不知道情况如何,而后面又使用 %~dp0pdftk,感觉空格、引号与路径有点混乱,可提供给楼主一种方式就好。如:第7行输入一个含有空格的路径,而没有引号,后续会出错。
bat小白,请多指教!谢谢!

TOP

回复 6# aloha20200628


   
大佬,代码第2行判断是否存在pdf文件会失败吧
bat小白,请多指教!谢谢!

TOP

回复 24# aloha20200628


   *.pdf 通配结果为空,就不执行do了
bat小白,请多指教!谢谢!

TOP

返回列表