簡體   English   中英

從C#啟動Acrobat Reader 10.0:如何最小化?

[英]Launching Acrobat Reader 10.0 from C#: how to minimize?

我正在啟動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。

有沒有辦法迫使讀者最小化?

謝謝!

在命令行中使用inclduding /h進行嘗試。 這將啟動最小化到任務欄的Adobe Reader實例。 然而,沒有“好”選項可以完全隱藏它(據我所知)。 除了使用Win32 API破解一些不可預知的東西。 啟動某些應用最小化的更通用的方法是通過API。 見史蒂夫的帖子。

這應該做:

string args = String.Format("/h /t \"{0}\" \"{1}\"", this.pdfFileName, this.printerName);

啟動該過程后,您可以獲取它的MainWindowHandle並使用P / Invoke將其最小化:

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

//..
ShowWindow(process.MainWindowHandle, 11);  //11 is ForceMinimized
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();

見: 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

實際上,您無法使用Adobe Acrobat reader使用您提到的代碼將pdf文檔直接發送到打印機。

你需要的是.net pdf api,它具有實現打印pdf的功能。 您可以添加對項目的引用,然后開始使用api。 你可以在互聯網上谷歌/ bing關於souch apis,這也是免費和易於使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM