【问题标题】:Suppress Adobe window while printing打印时抑制 Adob​​e 窗口
【发布时间】:2011-12-02 02:10:14
【问题描述】:

我正在尝试从 VB.NET 程序打印 PDF 文档。以下代码有效,但打印时出现 Adob​​e 空白屏幕。有没有办法抑制这个窗口?

Dim startInfo As New ProcessStartInfo
startInfo.FileName = "Test.pdf"
startInfo.Verb = "print"
startInfo.Arguments = ""
startInfo.UseShellExecute = True
startInfo.CreateNoWindow = False
Dim report As Process = New Process
report.StartInfo = startInfo
report.Start()

【问题讨论】:

  • 您是否尝试过将 CreateNoWindow 设置为 true?
  • 将 CreateNoWindow 设置为 true 但窗口仍然出现
  • CreateNoWindow 只能在控制台应用程序上运行。你唯一的希望是 WindowStyle = Hidden。几率很低,Adobe 产品的设计让人讨厌。

标签: vb.net


【解决方案1】:

您必须了解,您实际上并没有在这里调用 Adob​​e Acrobat 或 Adob​​e Reader,您是在要求 shell 为您做某事,而 shell 将按照注册表的要求执行任何操作,而注册表是首先要为程序设置做任何安装程序。

当您设置ProcessStartInfoFileName 属性时,您将能够检查Verbs 属性并查看该文件扩展名的可用动词。您可以通过查看HKCL\.pdf 下的注册表并记下“(默认)”值(在我的情况下为AcroExch.Document)来查看.pdf 的动词列表。然后导航到HKCL 下的任何内容,在我的例子中是HKCL\AcroExch.Document 并查看shell 子键。对于每个动词,都有一个要运行的命令,这取决于程序。我的是:

"C:\Program Files\Adobe\Acrobat 9.0\Acrobat\Acrobat.exe" /p /h "%1"

因此,当我在您使用“打印”动词时“执行”PDF 时,我的 PDF 将传递给上面的 %1 参数。即使我提供了额外的参数,它们也不会被传递,因为这个键只是在寻找一个。

旧版本的 Acrobat 支持“静默打印”,但根据 this post 的说法,出于安全原因,它们在版本 8 左右被删除。我基本上猜测 Adob​​e 希望人们知道他们的程序何时被调用。

另外,因为你要求 shell 为你做一些事情,CreateNoWindow 是相对于 shell 而不是 shell 正在做什么,所以这对你也不起作用。

如果您真的想在没有 UI 的情况下进行打印,那么您需要查看实际使用 COM 或其他工具直接与 Adob​​e Acrobat 或 Adob​​e Reader 或其他程序(如 Ghostscript)对话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2011-05-14
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多