我正在使用Adobe Acrobat Reader DC静默打印PDF文件:
List<string> files = ..... ; // get list of PDF files on disk
const string flagNoSplashScreen = "/s";
const string flagOpenMinimized = "/h";
foreach (var file in files)
{
var flagPrintFileToPrinter = string.Format("/t \"{0}\" \"{1}\"", file, PrinterName);
var args = string.Format("{0} {1} {2}", flagNoSplashScreen, flagOpenMinimized, flagPrintFileToPrinter);
try
{
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.FileName = PathHelper.AdobeExePath;// @"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe";
p.StartInfo.RedirectStandardError = true;
p.StartInfo.Arguments = args;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
}
catch (Exception ex)
{
// log
}
}
我可以成功打印所有PDF文件。但是我想按顺序在文件列表中打印PDF文件。 我已按顺序将每个文件发送给Acrobat Reader。但是流程无法按顺序进行。
我在foreach块中尝试了以下代码:
p.WaitForExit(1000);
...
while(!p.HasExited)
{
Thread.Sleep(1000);
}
...
p.Kill(); // kill process
// wait and kill all working Acrobat Reader exe
有了这些代码,我可以按顺序打印。但是我不想等待不必要的时间并浪费资源。
还有其他按顺序打印PDF文件的方法吗?