Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用sumatra pdf通过命令行批量打印pdf_Batch File_Pdf_Printing_Command Line_Adobe Reader - Fatal编程技术网

Batch file 使用sumatra pdf通过命令行批量打印pdf

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在默认打印

由于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),用于打印和显示对话框的命令为:

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立即退出(检查错误代码是否失败)
因此,通过一次调用SumatraPDF,甚至可以打印命令行上指定的多个文件,这将使批处理文件更加高效

由于我还没有安装SumatraPDF,我建议先尝试一个只有3行的批处理文件

"%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"
)