Тихая печать с Foxit Reader из процесса открывает графический интерфейс
У меня проблемы с печатью PDF через Foxit Reader.. Проблема не в том, что это не печать, а в том, что графический интерфейс загружается при попытке сделать это... Я бы хотел, чтобы печать просто происходила в фоновом режиме...
Все, что я до сих пор читал, говорит о том, что приведенный ниже код должен печататься в фоновом режиме, но при каждом задании печати графический интерфейс 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)
Источники:
3 ответа
Я думаю, что это дизайн новой версии Foxit Reader.
Удаление последней версии, загруженной с официального сайта, и установка более старой версии (6.2.3) из Old Apps. Процесс прекращается сразу после печати.
Обнаружена та же проблема, но исправлена, когда я переставил аргументы в строке:
startInfo.Arguments = String.Format(" \"{0}\" /t \"{1}\"",
reportFullPath,
printerName);
Попробуйте установить свойство WindowStyle, большинство оконных приложений слушают его:
psInfo.WindowStyle = ProcessWindowStyle.Hidden;
Кроме того, в документации говорится, что CreateNoWindow не совместим с UseShellExecute, поэтому вам, вероятно, следует отключить это:
psInfo.UseShellExecute = false; //Using ShellExecute messes stuff up
Однако CreateNoWindow фактически указывает, использовать ли существующее окно консоли для консольных приложений, [1] и его можно не указывать, так как это не влияет на запуск приложений с графическим интерфейсом.