Добрый день. Необходимо распечатать табличный документ "на сервере", на сетевой принтер, но метод ТабличныйДокумент.Напечатать() доступен на клиенте, как выкрутиться?
Данные получаю через http из Моб.приложения.
Ниже скрин, естественно ничего не отправляет))
Как вывести на печать? Может есть пример у кого?
Данные получаю через http из Моб.приложения.
Ниже скрин, естественно ничего не отправляет))
Как вывести на печать? Может есть пример у кого?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Не печатает((
Пакет = Новый ПакетОтображаемыхДокументов;
Пакет.КоличествоЭкземпляров = Количество;
ЭлементПакета1 = Пакет.Состав.Добавить();
ЭлементПакета1.Наименование = "ПАРАМЕТРЫ_ПЕЧАТИ_Штрих";
ЭлементПакета1.Данные = ПоместитьВоВременноеХранилище(ТабДокумент);
Пакет.ИмяПринтера = "Kyocera:ECOSYS M2540dn:KM7352F6";
пакет.Заголовок = "ПАРАМЕТРЫ_ПЕЧАТИ_Штрих";
Пакет.Напечатать();
ПоказатьНе печатает((
(1) Сохраните его во временный файл в pdf и распечатайте с помощью adobe reader командой:
ЗапуститьПриложение(ПутьAdobeReader + " /N /T /s /h """ + ИмяВременногоФайла + """" + ?(ЗначениеЗаполнено(ИмяПринтера), " " + ИмяПринтера, ""),,);
WshShell = Новый COMОбъект("WScript.Shell");
ПутьAdobeReader = WshShell.RegRead("HKCR\Software\Adobe\Acrobat\Exe\");
Если Не ЗначениеЗаполнено(ПутьAdobeReader) Тогда
Сообщить("Не найдена программа Adobe Reader! Печать pdf-файлов невозможна.", СтатусСообщения.Важное);
Возврат;
КонецЕсли;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
КопироватьФайл(Файл.ПолноеИмя, ИмяВременногоФайла);
ЗапуститьПриложение(ПутьAdobeReader + " /N /T /s /h """ + ИмяВременногоФайла + """" + ?(ЗначениеЗаполнено(ИмяПринтера), " " + ИмяПринтера, ""),,);
Показать
(4)воспользовался вашим вариантом,
код:
Строка запуска формируется вот такая:
C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe /N /T /s /h C:\Users\USR1CV8.SERVER\AppData\Local\Temp\v8_579D_f.pdf Kyocera:ECOSYS M2540dn:KM7352F6
вот такой ответ получаю...
код:
ВремФайл=ПолучитьИмяВременногоФайла("pdf");
ТабДокумент.Записать(ВремФайл,ТипФайлаТабличногоДокумента.PDF);
ИмяПринтера = "Kyocera:ECOSYS M2540dn:KM7352F6";
WshShell = Новый COMОбъект("WScript.Shell");
ПутьAdobeReader = WshShell.RegRead("HKCR\Software\Adobe\Acrobat\Exe\");
Если ЗначениеЗаполнено(ПутьAdobeReader) Тогда
ПутьAdobeReader = Сред(ПутьAdobeReader,2,СтрДлина(ПутьAdobeReader)-2);
ЗапуститьПриложение(ПутьAdobeReader + " /N /T /s /h " + ВремФайл + ""+ ?(ЗначениеЗаполнено(ИмяПринтера), " " + ИмяПринтера, ""));
КонецЕсли;
ПоказатьСтрока запуска формируется вот такая:
C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe /N /T /s /h C:\Users\USR1CV8.SERVER\AppData\Local\Temp\v8_579D_f.pdf Kyocera:ECOSYS M2540dn:KM7352F6
вот такой ответ получаю...
Прикрепленные файлы:
(5) Я использую для пакетной печати. Приемлемо по скорости. В любом случае стандартных вариантов печати с сервера по-моему нет. только с использованием сторонних приложений или COM объектов.
вот кстати тоже с адобом игрался. Не помню насколько рабочий вариант был:
вот кстати тоже с адобом игрался. Не помню насколько рабочий вариант был:
Acrobat = Новый COMОбъект("AcroPDF.PDF.1");
Acrobat.Visible = false;
Acrobat.LoadFile(НастройкаПечатнойФормы.ИмяФайлаПечатнойФормы);
Acrobat.printAll();//или Acrobat.printWithDialog();
(13) поменял пути, теперь так:
"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /N /T /s /h C:\Users\USR1CV8.SERVER\AppData\Local\Temp\v8_CA84_13.pdf \\192.168.9.52\
Открывается Адоб,показывает в последних только что созданный файл,а вот на печать не летит, не совсем понимаю прикола))
"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /N /T /s /h C:\Users\USR1CV8.SERVER\AppData\Local\Temp\v8_CA84_13.pdf \\192.168.9.52\
Открывается Адоб,показывает в последних только что созданный файл,а вот на печать не летит, не совсем понимаю прикола))
Прикрепленные файлы:
(18)
(16)
я прописал таким путём:
ЗапуститьПриложение("cmd /c ' " + ПутьAdobeReader + " /t " + ВремФайл + ""+ ?(ЗначениеЗаполнено(ИмяПринтера), " " + ИмяПринтера, "") + " '");
Выглядит так: cmd /c ' "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /t C:\Users\USR1CV8.SERVER\AppData\Local\Temp\v8_43F1_f.pdf "Kyocera_print_server" '
И на принтер так ничего и не выходит, но если же запустить, эту же команду в PowerShell или в CMD то на принтер выходит документ.
Я так понимаю что не имя принтера не соответствует имени принтера на сервере?
(16)
я прописал таким путём:
ЗапуститьПриложение("cmd /c ' " + ПутьAdobeReader + " /t " + ВремФайл + ""+ ?(ЗначениеЗаполнено(ИмяПринтера), " " + ИмяПринтера, "") + " '");
Выглядит так: cmd /c ' "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /t C:\Users\USR1CV8.SERVER\AppData\Local\Temp\v8_43F1_f.pdf "Kyocera_print_server" '
И на принтер так ничего и не выходит, но если же запустить, эту же команду в PowerShell или в CMD то на принтер выходит документ.
Я так понимаю что не имя принтера не соответствует имени принтера на сервере?
(20) у мен был еул из 5ти линуховвх серверов, я им на шару скидывал pdf, они по крону печатали каждые 5 минут эти пдфы. Но там была ночная печать пакетов доков в общей сложности овер 20к пакетов по 3-10 страничек.
& в повершелле - это вызов приложения (CALL), без него это просто PRINT с кучей параметров, ошибка изза того, что их вычисление невозможно.
& в повершелле - это вызов приложения (CALL), без него это просто PRINT с кучей параметров, ошибка изза того, что их вычисление невозможно.
(26) у меня кстати код так и не стартует....
ВремФайл=ПолучитьИмяВременногоФайла("pdf");
ТабДокумент.Записать(ВремФайл,ТипФайлаТабличногоДокумента.PDF);
ИмяПринтера = """Kyocera_print_server""";
WshShell = Новый COMОбъект("WScript.Shell");
ПутьAdobeReader = WshShell.RegRead("HKCR\Software\Adobe\Acrobat\Exe\");
Если ЗначениеЗаполнено(ПутьAdobeReader) Тогда
путь = ПутьAdobeReader+" " + "/n"+ " /p"+ " /t "+""""+ ВремФайл +""""+ ?(ЗначениеЗаполнено(ИмяПринтера), " " + ИмяПринтера, "");
ЗапуститьПриложение(путь);
КонецЕсли;
КонецЦикла;
Ответ = Новый HTTPСервисОтвет(200);
Возврат Ответ;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот