我正在尝试从VB.NET程序打印PDF文档。以下代码有效但打印时出现Adobe空白屏幕。有没有办法压制这个窗口?
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()
答案 0 :(得分:3)
你必须明白你实际上并没有在这里调用Adobe Acrobat或Adobe Reader,你要求shell为你做一些事情,而shell将会做任何注册表所要做的事情,并且注册表是首先要为程序设置执行任何安装程序。
当您设置ProcessStartInfo
的{{1}}属性时,您将能够检查FileName
属性并查看该文件扩展名的可用动词。您可以通过查看Verbs
下的注册表并注意“(默认)”值(我的案例.pdf
)来查看HKCL\.pdf
的动词列表。然后导航到AcroExch.Document
下的任何内容,在我的情况下为HKCL
并查看HKCL\AcroExch.Document
子项。对于每个动词,都有一个运行命令,这取决于程序。我的是:
shell
因此,当我使用“print”动词“执行”PDF时,我的PDF将传递给上面的"C:\Program Files\Adobe\Acrobat 9.0\Acrobat\Acrobat.exe" /p /h "%1"
参数。即使我提供了额外的参数,它们也不会被传递,因为这个键只能查找一个。
较早版本的Acrobat支持“静默打印”,但根据this post,出于安全原因,它们已在第8版中删除。我猜基本上Adobe希望人们在调用他们的程序时知道。
另外,因为你要求shell为你做一些事情,%1
是相对于shell而不是shell正在做的事情,所以这对你也不起作用。
如果您真的想在没有用户界面的情况下进行打印,那么您需要查看实际使用COM或其他内容直接与Adobe Acrobat或Adobe Reader或其他程序(如Ghostscript)进行对话。