Имя: Пароль:
1C
1С v8
Как объединить и вывести на печать PDF
,
0 BenDiget
 
29.12.22
20:50
Привет!
Получил Временные файлы PDF с сайта. Теперь требуется их объединить и вывести на печать, кто подскажет как?)

        ПараметрыПолучения = ПолучениеФайловИзИнтернетаКлиентСервер.ПараметрыПолученияФайла();
    ПараметрыПолучения.Таймаут = 120;
    Результат = ПолучениеФайловИзИнтернета.СкачатьФайлВоВременноеХранилище(СсылкаНаСертификат, ПараметрыПолучения);
    Если Результат.Статус Тогда
        
        Данные = ПолучитьИзВременногоХранилища(Результат.Путь);
        УдалитьИзВременногоХранилища(Результат.Путь);
        
        ВремФайл = ПолучитьИмяВременногоФайла("pdf");
        Данные.Записать(ВремФайл);

    КонецЕсли;
1 bmitkin
 
29.12.22
21:02
Можно использовать ghostscript (https://ghostscript.readthedocs.io/en/latest/Use.html) и ЗапуститьПриложение(), чтобы получить из нескольких pdf файлов один.
Потом открыть этот файл в программе для просмотра PDF, которая установлена на компьютере пользователя. А он оттуда уже распечатает.
2 BenDiget
 
29.12.22
21:08
(1) Спасибо! Попробую
3 bmitkin
 
29.12.22
21:14
Смотри параметры: -dBATCH -dNOPAUSE -dQUIET -sDEVICE=pdfwrite -sOutputFile
4 BenDiget
 
29.12.22
21:25
(3) Сайт не открывается, и кроме того эту прогу надо ж будет ставить всем... Это не подходит.
Я не верю, что нет штатных способов)
5 Мимохожий Однако
 
29.12.22
21:30
(4) Наверняка есть и другие сайты с подобным функционалом
6 bmitkin
 
29.12.22
21:33
https://www.ghostscript.com/
Формировать можно на сервере и отдавать пользователю готовый файл
7 NorthWind
 
29.12.22
22:27
(4) ну, возможно, есть онлайн собиралки PDFов, которые предоставляют апи. Но для них нужен будет инет, они могут хотеть денег и могут многда валяться. Как по мне - блаже поставить софт на требуемые компы, чем переживать кучу звонков, когда сервис ни с того ни с сего отвалится.
8 BenDiget
 
30.12.22
15:43
(6) Поставил, а как пользооваться?
9 NorthWind
 
30.12.22
15:45
(8) -> (3)
10 bmitkin
 
30.12.22
17:14
(8) В общих чертах так:
Собираешь строку для запуска exeшника: Путь к нему + все необходимые параметры + пути в файлам которые надо объединить.
Выполняешь с помощью ЗапуститьПриложение(<строка для запуска>).
Если всё прошло нормально, получаешь итоговый PDF  в файле, путь к которому передал в параметре -sOutputFile.

Лучше, конечно, сначала потренироваться в командной строке.
11 bmitkin
 
30.12.22
17:22
Функция СклеитьФайлыПДФ(МассивФайлов) Экспорт
    
    СписокФайлов = "";

    Для каждого ИмяФайла Из МассивФайлов Цикл
        СписокФайлов = СписокФайлов + " """ + ИмяФайла + """";
    КонецЦикла;
    ИмяКонечногоФайла = ПолучитьИмяВременногоФайла("pdf");
    СтрокаЗапуска = ПутьGhostscript + " -dBATCH -sPAPERSIZE=a4 -dPDFFitPage -dNOPAUSE -dQUIET -sDEVICE=pdfwrite -sOutputFile=""" + ИмяКонечногоФайла + """ " + СписокФайлов;
    КодВозврата    = 0;
    
    ИмяКомандногоФайла = ПолучитьИмяВременногоФайла("cmd");
    ТекДок = Новый ТекстовыйДокумент;
    ТекДок.УстановитьТекст(СтрокаЗапуска);
    ТекДок.Записать(ИмяКомандногоФайла, КодировкаТекста.ANSI);
    ЗапуститьПриложение(ИмяКомандногоФайла, КаталогВременныхФайлов(), Истина, КодВозврата);
    
    ФайлПДФ = Новый Файл(ИмяКонечногоФайла);
    Если ФайлПДФ.Существует() Тогда
        Возврат ИмяКонечногоФайла;
    Иначе
        Сообщить("Не удалось создать файл PDF. Обратитесь к администратору.");
        Возврат Неопределено;
    КонецЕсли;
КонецФункции
12 тук-тук
 
30.12.22
22:33
(0) печать по отдельности чем не устраивает ?
13 BenDiget
 
05.01.23
20:13
(11) Спасибо! Большое буду пробовать!!!