Batch file 使用sumatra pdf通过命令行批量打印pdf
由于Adobe发布了Adobe Reader的新更新(2014年9月16日11.09),我们在通过命令行打印pdf文件时遇到了问题 我们的正式脚本如下所示: 脚本按预期工作。由于更新,脚本经常挂起或速度非常慢。 剧本多少有些无用 因为adobe reader可能不是最小的,我们还考虑使用轻量级的alternativ,如sumatrapdf或foxitreader。这将是一个伟大的一点,开始使用这些替代品之一 所以我想在苏门答腊岛试试。 他们的文件说: =>-打印为默认$file.pdf在默认打印机上打印pdf文件 所以我想到了这个,类似于adobe reader的例子 但什么都不管用。如果你也尝试过: “C:\Program Files(x86)\SumatraPDF\SumatraPDF.exe-打印为调用、启动等的默认“%%p” 有哪个男孩知道如何使用苏门答腊PDF进行打印吗?我也不会因为让它和FoxItReader一起工作而感到厌恶 很高兴能得到一些建议:) 也许有人有类似的问题需要解决。Adobe Reader 根据(适用于Adobe Acrobat/Reader 10而非XI),用于打印和显示对话框的命令为:Batch file 使用sumatra pdf通过命令行批量打印pdf,batch-file,pdf,printing,command-line,adobe-reader,Batch File,Pdf,Printing,Command Line,Adobe Reader,由于Adobe发布了Adobe Reader的新更新(2014年9月16日11.09),我们在通过命令行打印pdf文件时遇到了问题 我们的正式脚本如下所示: 脚本按预期工作。由于更新,脚本经常挂起或速度非常慢。 剧本多少有些无用 因为adobe reader可能不是最小的,我们还考虑使用轻量级的alternativ,如sumatrapdf或foxitreader。这将是一个伟大的一点,开始使用这些替代品之一 所以我想在苏门答腊岛试试。 他们的文件说: =>-打印为默认$file.pdf在默认打印
start "Print PDF" /wait "%ProgramFiles(x86)%\Adobe\Reader 11.0\Reader\AcroRd32.exe" /p "%%p"
我认为,如果要显示打印对话框,使用option/h
以最小化窗口启动Adobe Reader是没有用的
要打印到特定打印机,要使用的命令行如下
start "Print PDF" /wait /min "%ProgramFiles(x86)%\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t "%%p" "printername" "drivername" "portname"
/wait
停止批处理作业的执行,直到Adobe Reader自行终止。而选项/min
会导致在GUI应用程序执行最小化窗口时,如果应用程序没有覆盖它,并且仍然显示窗口最大化或处于还原模式
苏门答腊岛PDF 我不确定它是否是最新的,因为它在底部链接到苏门答腊PDF页面的Wiki文档。此Wiki页面最近更新,包含有关打印选项的不同信息
- -打印到默认值
将此命令行上指示的所有文件打印到系统默认打印机。打印后,SumatraPDF立即退出(检查错误代码是否失败)
"%ProgramFiles(x86)%\SumatraPDF\SumatraPDF.exe" -print-to-default "Full Path and Name of a PDF file"
echo Exit code of SumatraPDF is: %ERRORLEVEL%
pause
接下来查看批处理文件的输出。是否显示错误或PDF文件是否按预期打印
打印完成前,控制台窗口中的第二行输出是否已完成
如果是这种情况,苏门答腊PDF将作为一个单独的进程启动,退出代码评估实际上是不可能的。否则,您已经有了要使用的命令
但是,如果苏门答腊PDF是作为一个单独的(GUI)进程启动的,则很可能需要使用命令start
和选项/wait
,也可能需要使用上述Adobe Reader的/min
注意:小批量文件顶部没有@echo off
,用于测试,以查看执行批处理文件时的命令
FOR循环 查看代码中的
for
循环时,出现了一些错误,因为您将空格字符指定为分隔符,这对内部带有空格的文件路径/名称不好。此外,默认情况下,空格字符是的command的分隔符,因此,如果确实需要,则无需将其显式定义为分隔符
因此我建议使用
@for /F "delims=" %%p in ('dir "Y:\*.pdf" /b /a-d /s' 2^>nul) do (
"%ProgramFiles(x86)%\SumatraPDF\SumatraPDF.exe" -print-to-default "%%p"
)
使用“delims=“
分隔符列表仅更改为换行符%%p因此始终具有文件的完整路径和名称,即使通过命令dir
输出的行上存在1个或多个空格
2^>nul
通过将错误消息重定向到设备nul,如果在整个驱动器Y上根本找不到PDF文件,则抑制命令dir的错误消息。启动“打印PDF”/wait”%ProgramFiles(x86)%\Adobe\Reader 11.0\Reader\AcroRd32.exe“/p”%%p”-完成了该作业。关键字start解决了我们的问题。打印作业现在再次按预期工作。非常感谢。根据您的操作,Adobe Reader许可证不允许将其用于无头打印或从服务器打印。苏门答腊PDF是缓慢的,如果你做了大量的打印在一批,你需要速度。来自苏门答腊PDF论坛:“通常苏门答腊不擅长打印,因此我不建议在这种情况下使用它。目前,我们通过为每个页面生成位图并将这些位图发送到打印机来打印。Adobe更智能。”
"%ProgramFiles(x86)%\SumatraPDF\SumatraPDF.exe" -print-to-default "Full Path and Name of a PDF file"
echo Exit code of SumatraPDF is: %ERRORLEVEL%
pause
@for /F "delims=" %%p in ('dir "Y:\*.pdf" /b /a-d /s' 2^>nul) do (
"%ProgramFiles(x86)%\SumatraPDF\SumatraPDF.exe" -print-to-default "%%p"
)