如何使用pdf24-Creator.exe命令行批量将文件夹内PDF转为JPG
PDF24批量PDF转JPG批处理问题修正
问题前提
- 已手动验证PDF24的PDF转JPG效果,转换质量、速度均优于Imagick,优先选用该工具实现批量转换
- 不清楚
pdf24-Creator.exe的命令行调用规则,自写的批量转换脚本运行不符合预期,需要定位问题
原自写批处理代码:
@For /R "C:\Users\vladi\PDF_TO_JPG\" %%G In (*.pdf) Do @For %%H In ("%%~dpG.") Do @"%ProgramFiles%\PDF24\pdf24-Creator.exe" -outputFile "%%~nG_.jpg" "%%G"
原代码存在的问题
- 调用程序错误:
pdf24-Creator.exe是带GUI的主程序,本身不支持后台无交互命令行转换,直接调用只会弹出软件界面,不会自动执行转换。命令行后台转换需要调用同安装目录下的pdf24-DocTool.exe组件。 - 冗余逻辑:代码里嵌套的第二层
For %%H In ("%%~dpG.")循环完全没有使用%%H变量,属于无效代码,不产生任何作用。 - 输出路径不完整:输出JPG只写了文件名
%%~nG_.jpg,没有指定完整存储路径,就算能正常转换,生成的文件也会落到PDF24默认工作目录,不会存在原PDF所在文件夹,和预期存储位置不符。 - 多页PDF适配缺失:没有做页码区分,多页PDF转换时会出现后生成的页面覆盖前面页面的问题,最后只能拿到最后一页的JPG。
- 参数错误:
-outputFile参数需要配合正确的转换格式参数使用,单独传该参数不会触发转换逻辑。
修正后可用代码
@echo off :: 按需修改配置项:PDF存放根目录、输出JPG分辨率 set "PDF_ROOT=C:\Users\vladi\PDF_TO_JPG\" set "JPG_DPI=300" set "PDF24_DOCTOOL=%ProgramFiles%\PDF24\pdf24-DocTool.exe" :: 递归遍历目录下所有PDF执行转换 for /R "%PDF_ROOT%" %%G in (*.pdf) do ( :: 输出JPG与原PDF同目录,自动带页码后缀避免覆盖 "%PDF24_DOCTOOL%" -convertTo jpg -dpi %JPG_DPI% -outputFile "%%~dpnG_page_{page}.jpg" "%%G" ) echo 转换完成 pause
参数说明
-convertTo jpg:指定转换目标格式为JPG,是pdf24-DocTool.exe支持的正式转换指令-dpi:控制输出JPG的清晰度,日常预览用150即可,需要高清输出选300,不要盲目调太高否则文件体积会非常大- 文件名里的
{page}是PDF24内置的页码占位符,转换时会自动替换为对应页码,解决多页PDF重名覆盖问题 - 输出路径用
%%~dpnG拼接,会自动取原PDF的所在目录和文件名前缀,生成的JPG和原PDF存在同一位置,方便查找
内容的提问来源于stack exchange,提问作者VLD
相关产品推荐
相关产品推荐

