Показать сообщение отдельно
Старый 13.10.2017, 18:17   #1  
actNaturally is offline
actNaturally
Участник
Аватар для actNaturally
 
19 / 10 (1) +
Регистрация: 28.10.2014
? Распечатать PDF в пакетном режиме
Приветствую!

Удавалось ли кому-то отправить pdf файл на принтер в серверном режиме?
DAX 2012
Принтер установлен на AOS и 100% доступен.
Файл на сетевом диске, 100% доступен.

Стандартные команды AdobeReader здесь не работают (при выполнении onServer):
X++:
new InteropPermission(InteropKind::ClrInterop).assert();    

process         = new System.Diagnostics.Process();
processInfo     = process.get_StartInfo();        
processInfo.set_FileName(@"acrord32.exe");

processInfo.set_Arguments(strFmt('/s /h /t "%1" "%2" "%3" "%4"'
                                        , fileName
                                        , deviceName
                                        , printerDriverName
                                        , PrinterPortName));      

processInfo.set_UseShellExecute(true);
processInfo.set_CreateNoWindow(true);
process.Start();

CodeAccessPermission::revertAssert();
AdobeReader установлен на сервере. При запуске такого джоба из клиента, запущенного на АОСе - адоб открывается, принтер печатает.
При запуске джоба в серверном режиме - адоб появляется в процессах АОСа, печатаемый файл занят этим процессом, печать не происходит.
Насколько я понимаю, причина в том, что Адоб не умеет так печатать, без видимого клиентского интерфейса.

Пробовали использовать Spire.Pdf, библиотека печатает в серверном режиме! Нет рычагов, чтобы добиться правильного расположения печати с помощью этой библиотеки.

Библиотека PdfSharp вызывает всё тот же Адоб через process.Start() внутри себя.

Кто подскажет вариант/библиотеку?