C # Adobe Acrobat Reader Печать файлов PDF на заказ - PullRequest
0 голосов
/ 02 июля 2019

Я печатаю файлы PDF без вывода сообщений с помощью Adobe Acrobat Reader DC:

        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-файлы по заказу в списке files . Я отправлял каждый файл в 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-файлов по заказу?

...