从Windows命令行打印PDF

Kay*_*Kay 18 windows printing pdf cmd sh

我正在尝试在当前目录中打印所有pdf.当我在cmd(singlepdf.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
Run Code Online (Sandbox Code Playgroud)

echo显示文件在循环中正确处理 - 但后来我得到了错误 "C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe": No such file or directory

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

编辑: BTW,我安装了msys mingw

scr*_*pts 27

我知道这是老问题,但我最近遇到了同样的问题,没有一个答案对我有用:

  • 找不到旧的福昕阅读器版本
  • 正如@pilkch所说,2Printer添加了一个报告页面
  • Adobe Reader打开一个gui

搜索了一下后,我发现了这个:http://www.columbia.edu/~em36/pdftoprinter.html.

这是一个简单的exe,你用文件名调用它,它打印到默认的打印机(或你指定的打印机).从网站:

PDFtoPrinter是一个用于从Windows命令行打印PDF文件的程序.该程序通常用于Windows命令行,也适用于vDos DOS模拟器.

要将PDF文件打印到默认的Windows打印机,请使用以下命令:

PDFtoPrinter.exe filename.pdf
Run Code Online (Sandbox Code Playgroud)

要打印到特定打印机,请在引号中添加打印机的名称:

PDFtoPrinter.exe filename.pdf "Name of Printer"
Run Code Online (Sandbox Code Playgroud)

如果要打印到网络打印机,请使用Windows打印对话框中显示的名称,如下所示(并注意名称开头的两个反斜杠和servername后面的单个反斜杠):

PDFtoPrinter.exe filename.pdf "\\SERVER\PrinterName"
Run Code Online (Sandbox Code Playgroud)

  • 我是PDFtoPrinter.exe的作者。它是用AutoIt编写的,并且某些病毒扫描程序将任何AutoIt可执行文件标记为木马,因为脚本小子使用AutoIt。尝试将其提交给VirusTotal.com或viruscan.jotti.org以获取最新报告。 (3认同)

kim*_*3er 7

I had two problems with using Acrobat Reader for this task.

  1. The command line API is not officially supported, so it could change or be removed without warning.
  2. Send a print command to Reader loads up the GUI, with seemingly no way to prevent it. I needed the process to be transparent to the user.

I stumbled across this blog, that suggests using Foxit Reader. Foxit Reader is free, the API is almost identical to Acrobat Reader, but crucially is documented and does not load the GUI for print jobs.

A word of warning, don't just click through the install process without paying attention, it tries to install unrelated software as well. Why are software vendors still doing this???

  • 我无法让福昕阅读器(v7.0.6)在后台默默打印.它打开了GUI的最小化版本,并且在手动关闭之前不会返回控制:(所以我最终使用**SumatraPDF**,它具有命令行开关** - print-to-default**(或**-print-to**_myprinter_)和** - silent**允许完全静默的后台打印!如果成功则返回代码为0,如果失败则返回1.参考:[http://github.com/ sumatrapdfreader/sumatrapdf /维基/命令行-参数](http://github.com/sumatrapdfreader/sumatrapdf/wiki/Command-line-arguments) (6认同)
  • 如果您想在横向媒体上打印横向 PDF,SumatraPDF 就是垃圾!相反,它决定自动旋转您的 PDF。 (2认同)
  • 根据您的操作,Adobe Reader 许可证不允许将其用于无头、打印或从服务器打印。如果您批量进行大量打印并且需要速度,SumatraPDF 会很慢。来自 SumatraPDF 论坛:“总的来说,Sumatra 不太擅长打印,所以我不建议在 [高容量场景] 中使用它。目前我们通过为每个页面生成位图并将这些位图发送到打印机来打印。Adobe 更智能.” (2认同)

she*_*ter 6

错误信息告诉你了。

尝试一下

"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" /t "$pdf"
Run Code Online (Sandbox Code Playgroud)

当您将字符串括在单引号中时,这会使字符串中的所有内容(包括字符)成为有效字符串"。通过删除单引号,shell 会将双引号作为字符串“包装器”进行处理。

我还将文件名变量包装在双引号中,以便您可以轻松处理名称中带有空格的文件,即

"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" /t "$pdf"
Run Code Online (Sandbox Code Playgroud)

IHTH


小智 5

看起来您缺少打印机名称、驱动程序和端口 - 按此顺序。您的最终命令应类似于:

AcroRd32.exe /t <file.pdf> <printer_name> <printer_driver> <printer_port>
Run Code Online (Sandbox Code Playgroud)

例如:

"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"
Run Code Online (Sandbox Code Playgroud)

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