5

我正在启动 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 ,结果相同。

有没有办法强制阅读器开始最小化?

谢谢!

4

5 回答 5

2

/h在你的命令行中尝试一下。这将启动一个最小化到任务栏的 Adob​​e Reader 实例。然而,没有“好的”选项可以完全隐藏它(据我所知)。除了用Win32 API. 启动某些应用程序最小化的更通用方法是通过 API。见史蒂夫的帖子。

这应该这样做:

string args = String.Format("/h /t \"{0}\" \"{1}\"", this.pdfFileName, this.printerName);
于 2012-03-08T14:53:59.350 回答
2

启动进程后,您可以获取它的 MainWindowHandle 并使用P/Invoke将其最小化:

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

//..
ShowWindow(process.MainWindowHandle, 11);  //11 is ForceMinimized
于 2012-03-08T14:54:37.067 回答
0

看到这个:http ://www.robvanderwoude.com/commandlineswitches.php#Acrobat

打开一个 PDF 文件:

AcroRd32.exe PdfFile

在新的 Adob​​e Reader 实例中打开 PDF 文件:

AcroRd32.exe /N PdfFile

在第 7 页打开 PDF 文件:

AcroRd32.exe /A "page=7=OpenActions" PdfFile

打开一个激活导航窗格的 PDF 文件,缩小到 50%,然后搜索并突出显示单词“batch”:

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 ] ]

最后一个命令将打开一个新的 Adob​​e Reader 窗口,打印 PDF 文件,然后终止其窗口,除非该窗口恰好是剩下的唯一 Adob​​e Reader 窗口:至少一个 Adob​​e Reader 窗口将保持打开状态。

编辑: http ://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf#page=5

于 2012-03-08T14:59:10.883 回答
0

您实际上无法使用您提到的代码使用 Adob​​e acrobat 阅读器将 pdf 文档直接发送到打印机。

您需要的是一个 .net pdf api,它具有打印 pdf 的功能。您可以添加对项目的引用,然后开始使用 api。您可以在互联网上 google/bing 搜索同样免费且易于使用的 souch api。

于 2012-03-08T15:05:43.700 回答
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();
于 2016-02-20T22:01:26.737 回答