Вход | Регистрация


Печать PDF файлов на сервере через регламентное задание.

Печать PDF файлов на сервере через регламентное задание.
Я
   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);
КонецПроцедуры
Может кто встречался с проблемой и подскажет ?
Спасибо.
 
 
   Lama12
 
1 - 29.01.18 - 07:29
(0) Хм... А просто сохранение в pdf неправильно сохраняет?
   Radion
 
2 - 29.01.18 - 10:26
(1) нормально сохраняет.
   Radion
 
3 - 29.01.18 - 12:30
Т.к. АдобеРидер не работает в серверном варианте, должен быть запущен клиент, то можно вопрос решить так (через wshshell): КомандаПечати = "Print /d:\\сервер\ИмяПринтера ПутькФайлуПечати";
   Radion
 
4 - 29.01.18 - 15:18
Проблема получаем файл в формате A6 а принтер печатает только формат A4 ((
   Radion
 
5 - 29.01.18 - 15:18
Через что можно еще вывести pdf на печать на сервере ?
   FIXXXL
 
6 - 29.01.18 - 16:43
(5) в 8.3.7 ТабДок.Записать() уже можно напрямую в PDF?
   FIXXXL
 
7 - 29.01.18 - 16:44
(6) + второй параметр смотри

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует