从Windows命令行打印PDF

我正在尝试打印当前目录中的所有pdf文件。 当我在cmdsinglepdf.sh )中调用这个bash脚本时: '"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"' /t Gemeinde_348_BioID_842_alt.pdf一切正常。

当用这个内容调用multiplepdfs.sh时:

 declare -a pdfs=(*.pdf) for pdf in ${pdfs[@]}; do echo -e "\nprinting **$pdf** with AcroRd32.exe...\n" '"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"' /t $pdf sleep 3 done 

回声显示文件在循环中正确寻址 – 但是然后我得到错误"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe": No such file or directory

有人可以帮助解决这个问题吗?

编辑:顺便说一句,我已经安装了msys mingw

Solutions Collecting From Web of "从Windows命令行打印PDF"

我在使用Acrobat Reader执行此任务时遇到了两个问题。

  1. 命令行API没有官方的支持,所以它可以改变或删除,恕不另行通知。
  2. 发送一个打印命令给Reader加载GUI,似乎没办法阻止它。 我需要这个过程对用户是透明的。

我偶然发现了这个博客 ,建议使用福昕阅读器 。 福昕PDF阅读器是免费的,这个API几乎和Acrobat Reader一样,但是最重要的是被记录下来,并且不会为打印作业加载GUI。

一个警告的话,不要只是通过点击安装过程而不关注,它也试图安装不相关的软件。 为什么软件供应商仍然这样做?

我有类似的问题连续打印多个PDF文件,并发现只有使用2Printer软件的解决方法。 打印PDF文件的命令行示例:

 2Printer.exe -s "C:\In\*.PDF" -prn "HP LasetJet 1100" 

它是免费的非商业用途在http://doc2prn.com/

看起来像缺少打印机名称,驱动程序和端口 – 按此顺序。 你的最终命令应该类似于:

 AcroRd32.exe /t <file.pdf> <printer_name> <printer_driver> <printer_port> 

例如:

 "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t "C:\Folder\File.pdf" "Brother MFC-7820N USB Printer" "Brother MFC-7820N USB Printer" "IP_192.168.10.110" 

注意:要查找打印机信息,请右键单击您的打印机并选择属性。 在我上面所示的情况下,打印机名称和驱动程序名称相符 – 但是您的信息可能有所不同。

错误信息告诉你。

试试吧

 "C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" /t $pdf 

当你把这个字符串放在单引号中时,这将使得所有的东西都在一个有效的字符串中,包括" chars”。通过删除单引号,shell将把字符串“wrappers”作为dbl引号处理。

我也会将文件名变量包装在dbl-quotes中,这样你就可以轻松地在名称中使用空格来处理文件了

 "C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" /t "$pdf" 

IHTH

使用Acrobat Reader不是一个好的解决方案,特别是命令行属性没有记录。 此外,Acrobat Reader的窗口在打印过程之后保持打开状态。 PDF文件是众所周知的打印机驱动程序,所以你可能会发现更好的工具,如2Printer.exe或RawFilePrinter.exe。 在我看来,RawFilePrinter拥有更好的支持和清晰的许可流程(您只需付一次捐款,就可以在许多您喜欢的项目中重新分发RawFilePrinter,即使是新版本也可以使用之前购买的许可证)

 RawFilePrinter.exe -p "c:\Users\Me\Desktop\mypdffile.pdf" "Canon Printer" IF %ERRORLEVEL% 1( echo "Error!" ) 

最新版本下载: http : //effisoft.pl/rawfileprinter

 @ECHO off set "dir1=C:\TicketDownload" FOR %%X in ("%dir1%*.pdf") DO ( "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe" /t "%%~dpnX.pdf" "Microsoft XPS Document Writer" ) FOR %%X in ("%dir1%*.pdf") DO (move "%%~dpnX.pdf" p/) 

试试这个..可能是你有一些其他版本的阅读器,所以这是问题..

第一反应 – 想要最终回馈给一个有帮助的社区…

希望将这个添加到仍然在寻找简单解决方案的人们的答复中。 我使用福昕软件的免费产品 – FoxItReader。
以下是无声打印版本的链接 – 新版本的无声打印功能仍然不起作用。 FoxitReader623.815_Setup

 FOR %%f IN (*.pdf) DO ("C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe" /t %%f "SPST-SMPICK" %%f & del %%f) 

我简单地创建了一个命令来遍历目录,并为每个pdf文件(FOR %% f IN * .pdf)静静地打开读取器(/ t)获取下一个PDF(%% f)并将其发送到打印队列SPST-SMPICK),然后在发送给打印队列(del %% f)后删除每个PDF。 Shashank展示了一个将文件移动到另一个目录的例子,如果你需要的话

 FOR %%X in ("%dir1%*.pdf") DO (move "%%~dpnX.pdf" p/)