【问题标题】:Print PDF using AcroRd32.exe and powershell not working使用 AcroRd32.exe 和 powershell 打印 PDF 不起作用
【发布时间】:2021-01-13 18:02:09
【问题描述】:

我正在尝试使用 powershell 和 AcroRd32.exe 打印 PDF,但现在遇到了我自己无法解决的问题。 如果我正在执行代码并且 Acrobat Reader 打开但没有生成打印作业。我什至可以在最新的使用文件中看到我的 pdf。

这是我的代码:

$file = "C:\temp\file.pdf"
$adobe = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
$driver = "HP Universal Printing PCL 6"
$port = "10.200.1.63:3910"

$printer = "\\pserver\printer07"
$arglist = "/s /t $($file) $($printer) $($driver) $($port)"
Start-Process $adobe -argumentlist $arglist -wait

我尝试了以下方法:

  1. 检查我要打印的文件是否存在并且可以访问 [YES]
  2. 尝试使用对话框打印:参数“-p $($filename) [WORKS]
  3. 检查计算机是否可以访问打印机 [YES]
  4. 仔细检查打印机名称、驱动程序和端口... [是]

即使没有驱动程序和端口,我也无法通过此代码打印文件。

有没有人有有用的提示或建议来解决这个问题?

【问题讨论】:

  • 如果您使用的是 Windows,为什么还要直接调用 Adob​​e?安装 Adob​​e 后,所有 .pdf 关联都会指向它,因此 Windows 知道默认启动 Adob​​e。没有理由明确地调用它。只需打开文件并调用 print。它将使用主机上的默认打印机。现在,如果您要打印为 pdf,则将 pdf 打印机设置为默认打印机,这就是将要使用的打印机,然后将其设置回原始打印机。 [Get-ChildItem -Path 'D:\temp' -Filter 'testPrintPdf.pdf' | ForEach-Object {Start-Process -FilePath $PSItem.FullName -Verb 'Print' -Wait}]
  • 我正在使用 powershell 和 windows 任务调度程序从客户端打印,以在多台网络打印机上打印在线生成和下载的 pdf 文件。
  • 我建议打开Acrobat SDK Developer FAQ(PDF 文件)并阅读第 24 页,它是关于从命令行使用 Adob​​e Acrobat 或 Adob​​e Reader 以及它支持哪些选项。打印机名称必须是已安装在 Windows 机器上的其中一台打印机的名称。我怀疑\\pserver\printer07 是已安装打印机的正确名称。另请参阅Printing PDFs from Windows Command Line
  • @Mofi 好吧,解决方案是使用打印机的本地名称。我将它添加到客户端,但名称更易读。我仍然想知道为什么它不适用于\\pserver\printer07

标签: powershell adobe acrobat


【解决方案1】:

这可能是你的问题的原因,但$driver中有空格,所以你肯定需要在命令行中添加引号(我对所有变量都这样做了,以防万一):

$arglist = "/s /t `"$file`" `"$printer`" `"$driver`" `"$port`""

【讨论】:

  • 感谢您的提示,但不幸的是它仍然不起作用。
  • @peoples 你确定你有正确的命令行语法吗?您是否尝试过将所有内容以纯文本形式放在批处理文件中并运行它?如果这不起作用,则不是 powershell 问题,而是您的命令参数的问题。
  • 我对其进行了测试,但得到的结果与上述相同。 Adobe Reader 打开,我可以在“刚刚”的最新使用文件中看到该文件,并且没有生成打印作业。
猜你喜欢
  • 2015-08-01
  • 2021-02-12
  • 1970-01-01
  • 2017-11-10
  • 2022-07-21
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多