我正在启动Reader 10.0,以便从Win 7系统上的C#程序向打印机发送PDF文件。这就是我现在正在做的事情:
startInfo.FileName = adobeReaderPath;
string args = String.Format("/t \"{0}\" \"{1}\"", this.pdfFileName, this.printerName);
startInfo.Arguments = args;
startInfo.CreateNoWindow = true;
startInfo.ErrorDialog = false;
startInfo.UseShellExecute = false;
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
Process process = Process.Start(startInfo);
我注意到像这样(或从命令提示符)启动Reader实际上启动了2个AcroRd32.exe可执行文件。它们都没有最小化。我也尝试使用相同的结果处理ProcessWindowStyle.Hidden。
有没有办法迫使Reader开始最小化?
谢谢!
答案 0 :(得分:2)
在命令行中使用inclduding /h
进行尝试。这将启动最小化到任务栏的Adobe Reader实例。然而,没有“好”选项可以完全隐藏它(据我所知)。除了用Win32 API
破解一些不可预知的东西。启动某些应用最小化的更通用的方法是通过API。见史蒂夫的帖子。
这应该做:
string args = String.Format("/h /t \"{0}\" \"{1}\"", this.pdfFileName, this.printerName);
答案 1 :(得分:2)
启动流程后,您可以获取它的MainWindowHandle并使用P/Invoke将其最小化:
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
//..
ShowWindow(process.MainWindowHandle, 11); //11 is ForceMinimized
答案 2 :(得分:0)
请参阅:http://www.robvanderwoude.com/commandlineswitches.php#Acrobat
打开PDF文件:
AcroRd32.exe PdfFile
在Adobe Reader的新实例中打开PDF文件:
AcroRd32.exe /N PdfFile
在第7页打开PDF文件:
AcroRd32.exe /A "page=7=OpenActions" PdfFile
打开导航窗格处于活动状态的PDF文件,缩小到50%,然后 搜索并突出显示“批处理”一词:
AcroRd32.exe /A "zoom=50&navpanes=1=OpenActions&search=batch" PdfFile
使用对话框打印PDF文件:
AcroRd32.exe /P PdfFile
以静默方式打印PDF文件:
AcroRd32.exe /N /T PdfFile PrinterName [ PrinterDriver [ PrinterPort ] ]
最后一个命令将打开一个新的Adobe Reader窗口,打印PDF 文件,然后终止其窗口,除非该窗口恰好是 唯一的Adobe Reader窗口:至少一个Adobe Reader窗口 将保持开放。
编辑: http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf#page=5
答案 3 :(得分:0)
您实际上无法使用Adobe Acrobat reader使用您提到的代码将pdf文档直接发送到打印机。
你需要的是一个.net pdf api,它具有实现打印pdf的功能。您可以添加对项目的引用,然后开始使用api。你可以在互联网上谷歌/ bing关于souch apis,这也是免费且易于使用的。
答案 4 :(得分:0)
Process proc = new Process();
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.Verb = "print";
proc.StartInfo.FileName = @"Path of Adobe exe";
proc.StartInfo.Arguments = String.Format(@"/p /h {0}", fileToPrint);
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();