![]() |
|
Печать PDF файлов на сервере через регламентное задание. | ☑ | ||
---|---|---|---|---|
0
Radion
29.01.18
✎
07:25
|
УТ 10.3. платформа 8.3.7.2008. странная ситуация на клиенте печатает наклейку. а если работа в фоновом режиме то нет ((( Т.е. получается задание уходит на печать но куда, не понятно. В инете нашел код:
Процедура ФоноваяПечатьPDFФайлов(МассивФайлов, ИмяПринтера) Экспорт WshShell = Новый COMОбъект("WScript.Shell"); //ПутьAdobeReader = WshShell.RegRead("HKCR\Software\Adobe\Acrobat\Exe\"); КтоПДФ = WshShell.RegRead("HKCR\.pdf\"); ЧтоПДФ = WshShell.RegRead("HKCR\"+КтоПДФ+"\Shell\Open\Command\"); ПутьAdobeReader = Лев(ЧтоПДФ,Найти(ЧтоПДФ,".exe")+4); Если Не ЗначениеЗаполнено(ПутьAdobeReader) Тогда #Если Клиент Тогда Сообщить("Не найдена программа Adobe Reader! Печать pdf-файлов невозможна.", СтатусСообщения.Важное); #КонецЕсли Возврат; КонецЕсли; oLocator = Новый COMОбъект("WbemScripting.SWbemLocator"); oService = oLocator.ConnectServer("", "", "", ""); //Задания от всех пользователей oService.Security_.impersonationlevel = 3; //получаем необходимые права oService.Security_.Privileges.AddAsString("SeLoadDriverPrivilege"); Для каждого Файл Из МассивФайлов Цикл //WshShell.Run(ПутьAdobeReader + " /N /T " + Файл.ПолноеИмя + ?(ЗначениеЗаполнено(ИмяПринтера), " " + ИмяПринтера, ""), 0); WshShell.Run(ПутьAdobeReader + " /N /T """ + Файл.ПолноеИмя + """"+ ?(ЗначениеЗаполнено(ИмяПринтера), " " + ИмяПринтера, ""), 0); ЗаданиеДобавлено = Ложь; ТекущееВремя = ТекущаяДата(); Пока Не ЗаданиеДобавлено И ТекущаяДата() < ТекущееВремя + 15 Цикл // 30 секунд на добавление задания #Если Клиент Тогда ОбработкаПрерыванияПользователя(); #КонецЕсли Для каждого ЗаданиеПечати Из oService.InstancesOf("Win32_PrintJob") Цикл #Если Клиент Тогда ОбработкаПрерыванияПользователя(); #КонецЕсли ЗаданиеДобавлено = ЗаданиеПечати.Document = Файл.Имя; КонецЦикла; КонецЦикла; Если Не ЗаданиеДобавлено Тогда #Если Клиент Тогда Сообщить("Не удалось отправить на печать файл '" + Файл.Имя + "'.", СтатусСообщения.Важное); #КонецЕсли КонецЕсли; КонецЦикла; // Ожидаем завершения печати //Пока oService.InstancesOf("Win32_PrintJob").Count > 0 Цикл КонецЦикла; //ПОКА ЗАРЕМАРИЛ // Получаем имя процесса НомерСимвола = Найти(ПутьAdobeReader, "\"); Пока НомерСимвола > 0 Цикл ПутьAdobeReader = Сред(ПутьAdobeReader, НомерСимвола + 1); НомерСимвола = Найти(ПутьAdobeReader, "\"); КонецЦикла; // Убиваем процесс WshShell.Run("taskkill /f /im " + ПутьAdobeReader, 0); КонецПроцедуры Может кто встречался с проблемой и подскажет ? Спасибо. |
|||
1
Lama12
29.01.18
✎
07:29
|
(0) Хм... А просто сохранение в pdf неправильно сохраняет?
|
|||
2
Radion
29.01.18
✎
10:26
|
(1) нормально сохраняет.
|
|||
3
Radion
29.01.18
✎
12:30
|
Т.к. АдобеРидер не работает в серверном варианте, должен быть запущен клиент, то можно вопрос решить так (через wshshell): КомандаПечати = "Print /d:\\сервер\ИмяПринтера ПутькФайлуПечати";
|
|||
4
Radion
29.01.18
✎
15:18
|
Проблема получаем файл в формате A6 а принтер печатает только формат A4 ((
|
|||
5
Radion
29.01.18
✎
15:18
|
Через что можно еще вывести pdf на печать на сервере ?
|
|||
6
FIXXXL
29.01.18
✎
16:43
|
(5) в 8.3.7 ТабДок.Записать() уже можно напрямую в PDF?
|
|||
7
FIXXXL
29.01.18
✎
16:44
|
(6) + второй параметр смотри
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |