Тихая печать с помощью Foxit Reader из процесса открывает графический интерфейс

У меня возникли проблемы с печатью PDF-файла через Foxit Reader. Проблема не в том, что он не печатается, а в том, что GUI загружается при попытке это сделать. происходит на заднем плане...

Все, что я прочитал до сих пор, предполагает, что приведенный ниже код должен фактически печатать в фоновом режиме, но для каждого задания на печать открывается графический интерфейс Foxit... Графический интерфейс также закрывается после печати, но я не хочу, чтобы он открывался в первое место. Я выполняю приведенный ниже код из консольного приложения, в котором размещена служба WCF, если это важно...

        ProcessStartInfo psInfo = new ProcessStartInfo();
        psInfo.FileName = FoxitReaderLocation;
        psInfo.Arguments = String.Format("/t \"{0}\" \"{1}\"",
            fileLocation,
            printerName);
        psInfo.WindowStyle = ProcessWindowStyle.Hidden;
        psInfo.CreateNoWindow = true;
        psInfo.UseShellExecute = true;
        Process process = Process.Start(psInfo);
        process.WaitForExit(10000);
        if (!process.HasExited)
        {
            process.Kill();
            process.Dispose();
        }

Печать с помощью /p "filelocation" также работает с принтером по умолчанию, но возникает та же проблема с графическим интерфейсом. Выполнение этого с Adobe Reader происходит автоматически, но не печатает половину моих файлов (но опять же, интерфейс командной строки Adobe Reader официально не поддерживается, поэтому, пожалуйста, не предлагайте использовать Adobe Reader)

Источники:


person Thomas Mulder    schedule 06.11.2015    source источник


Ответы (3)


Я думаю, что это дизайн новой версии Foxit Reader.

Удаление последней версии, загруженной с официального сайта, и установка более старой версии (6.2.3) с Старые приложения. Процесс завершился сразу после печати.

person tan9    schedule 17.02.2016

Столкнулся с той же проблемой, но был исправлен, когда я переставил аргументы в строке:

startInfo.Arguments = String.Format(" \"{0}\" /t  \"{1}\"",
      reportFullPath,
      printerName);
person kaplievabell    schedule 24.02.2017

Попробуйте установить свойство WindowStyle, большинство оконных приложений слушают его:

psInfo.WindowStyle = ProcessWindowStyle.Hidden;

Кроме того, документация указывает, что CreateNoWindow не совместим с UseShellExecute, поэтому вам, вероятно, следует отключить это:

psInfo.UseShellExecute = false; //Using ShellExecute messes stuff up

Однако CreateNoWindow фактически указывает, следует ли использовать существующее окно консоли для консольных приложений,[ 1] и его можно не указывать, так как он не влияет на запуск приложений с графическим интерфейсом.

person Cheese Lover    schedule 06.11.2015
comment
Возможно, вы пропустили вопрос, но WindowStyle уже установлен. И установка UseShellExecute не имеет значения.. Спасибо, что подумали со мной! - person Thomas Mulder; 09.11.2015