1С 8.3 Печать PDF Файла средствами 1С - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Печать PDF Файла средствами 1С

Данные > Примеры кода 1С > 1С 8.3 Файлы, каталоги
Перейти в раздел примеры кода 1С 8.3:
Печать файла в формате PDF (Пример №1) из 1С 8.3:
Процедура Печать_PDF_Файлов_1С(PDF_File) Экспорт

   
// Простая печать средствами 1С, программно распечатать файл в формате PDF из 1С
    // PDF_File - полный путь к файлу ПДФ (например: D:\Temp1C_PDF\INPUT.pdf)
    // Должен быть зарегистрирован предварительный просмотр в системе

   
AppShell = Новый COMОбъект("Shell.Application");
   
AppShell.ShellExecute(PDF_File, "", "", "print", 0);

КонецПроцедуры
Печать файла в формате PDF (Пример №2) из 1С 8.3:
Процедура Печать_PDF_Файла_Фоновая(МассивФайловPDF, ИмяУстройства = "") Экспорт

   
// Процедура печатает pdf-файлы (из списка) в фоновом режиме (без участия пользователя)
    // Параметры процедуры:
    //        МассивФайловPDF - массив элементов типа "Файл" или массив структур с ключами "ПолноеИмя" и "Имя"
    //        ИмяУстройства - имя МФУ или принтера в системе

   
WScriptShell  = Новый COMОбъект("WScript.Shell");
   
Путь_AdobeReader = WScriptShell .RegRead("HKCR\Software\Adobe\Acrobat\Exe\");
    Если Не
ЗначениеЗаполнено(Путь_AdobeReader) Тогда
       
Сообщить("Печать pdf-файлов невозможна! Не найдена программа Adobe Reader!", СтатусСообщения.Важное);
        Возврат;
    КонецЕсли;

   
WbemScripting = Новый COMОбъект("WbemScripting.SWbemLocator");
   
ConnectServer = WbemScripting.ConnectServer("", "", "", ""); //Задания от всех пользователей

   
ConnectServer.Security_.impersonationlevel = 3; // Получение нужных прав
   
ConnectServer.Security_.Privileges.AddAsString("SeLoadDriverPrivilege");

    Для Каждого
ФайлPDF Из МассивФайловPDF Цикл
       
WScriptShell .Run(Путь_AdobeReader + " /N /T " + ФайлPDF.ПолноеИмя + ?(ЗначениеЗаполнено(ИмяУстройства), " " + ИмяУстройства, ""), 0);

       
ДобавленоЗадание = Ложь;
       
ТекущееВремя = ТекущаяДата();
       
// 40 секунд на добавление задания см.ОбработкаПрерыванияПользователя
       
Пока Не ДобавленоЗадание И ТекущаяДата() < ТекущееВремя + 40 Цикл
           
ОбработкаПрерыванияПользователя();
            Для Каждого
PrintJob Из ConnectServer.InstancesOf("Win32_PrintJob") Цикл
               
ОбработкаПрерыванияПользователя();
               
ДобавленоЗадание = PrintJob.Document = ФайлPDF.Имя;
            КонецЦикла;
        КонецЦикла;

        Если Не
ДобавленоЗадание Тогда
           
Сообщить("Не удалось распечатать файл '" + ФайлPDF.Имя + "'!", СтатусСообщения.Важное);
        КонецЕсли;
    КонецЦикла;

   
// Ожидание завершения печати
   
Пока ConnectServer.InstancesOf("Win32_PrintJob").Count > 0 Цикл
    КонецЦикла;

   
// Получение имени процесса
   
НомерСимвола = Найти(Путь_AdobeReader, "\");
    Пока
НомерСимвола > 0 Цикл
       
Путь_AdobeReader = Сред(Путь_AdobeReader, НомерСимвола + 1);
       
НомерСимвола = Найти(Путь_AdobeReader, "\");
    КонецЦикла;

   
// Удаление процесса
   
WScriptShell.Run("taskkill /f /im " + Путь_AdobeReader, 0);

КонецПроцедуры
Печать файла в формате PDF (Пример №3) из 1С 8.3:
Процедура Печать_PDF_Файла_Acrobat(PDF_File, ИмяУстройства, ОтправитьСразуНаПринтер) Экспорт

   
//Параметры процедуры для программной распечатати файла в формате PDF из 1С 8.3 :
    // PDF_File - полный путь к файлу ПДФ (например: D:\Temp1C_PDF\INPUT.pdf)
    // ИмяУстройства - имя МФУ или принтера в системе
    // ОтправитьСразуНаПринтер - булево (истина-на принтер, ложь-открыть для просмотра)

   
AdobeAR = Новый Файл("C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe");

    Если
AdobeAR.Существует() Тогда

        Если
ОтправитьСразуНаПринтер = Истина Тогда
           
// Параметры командной строки Acrobat Reader:
            // /o - не открывать диалоговое окно приложения
            // /h - открыть приложение и свернуть на панели задач
            // /p - открыть файл в приложении и сразу перейти к диалоговому окну печати
            // /t [ [ []]] - распечатать файл на указанном принтере

           
ЗапуститьПриложение("""" + AdobeAR.ПолноеИмя + """ /o /t """ + PDF_File + """ """ + ИмяУстройства + """");
           
// <директория приложения> /o /t <имя файла> <имя принтера>
       
Иначе
           
ЗапуститьПриложение(PDF_File);//открываем на просмотр средствами ОС
       
КонецЕсли;

    Иначе
       
Сообщить("Не установлен Acrobat Reader DC! Печать невозможна!");
       
ЗапуститьПриложение(PDF_File);//открываем на просмотр средствами ОС
   
КонецЕсли;

КонецПроцедуры
Печать файла в формате PDF (Пример №4) из 1С 8.3:
Процедура Печать_PDF_Файла_AcroPDF(PDF_File) Экспорт

   
// PDF_File - полный путь к файлу ПДФ (например: D:\Temp1C_PDF\INPUT.pdf)
   
AdobeAR = Новый COMОбъект("AcroPDF.PDF.1");
   
AdobeAR.Visible = false;
   
AdobeAR.LoadFile(PDF_File);
   
AdobeAR.printAll();
   
//или AdobeAR.printWithDialog();
   
AdobeAR.CloseAllDocs();
   
AdobeAR.Exit();

КонецПроцедуры
Печать файла в формате PDF (Пример №5) из 1С 8.3:
Процедура Пакетная_печать_PDF_Файлов_из_папки(PDF_Folder) Экспорт

   
// PDF_Folder - путь к папке с файлами ПДФ (например: D:\Temp1C_PDF)
   
Shell = Новый COMОбъект("Shell.Application");
   
Folder = Shell.Namespace(PDF_Folder);
   
Folders = Folder.Items;
    Для Каждого
Folder0 Из Folders Цикл
       
Folder0.InvokeVerbEx("Print");
    КонецЦикла;

КонецПроцедуры
Печать файла в формате PDF (Пример №6) из 1С 8.3:
Процедура Печать_PDF_Файла_Bullzip(Табл, PDF_File)

   
// PDF_File - полный путь к файлу ПДФ (например: D:\Temp1C_PDF\INPUT.pdf)
    // Используется сторонняя программа:
    // https://www.bullzip.com/products/pdf/info.php

   
ИмяУстройства = Новый ComObject("Bullzip.PDFPrinterSettings");
   
ИмяУстройства.SetValue("output", PDF_File);
   
ИмяУстройства.SetValue("ShowSaveAS", "never");
   
ИмяУстройства.SetValue("ShowProgress", "no");
   
ИмяУстройства.SetValue("ShowProgressFinished", "no");
   
ИмяУстройства.SetValue("ShowSettings", "never");
   
ИмяУстройства.SetValue("ShowPDF", "no");
   
ИмяУстройства.SetValue("ConfirmOverwrite","no");
   
ИмяУстройства.SetValue("OwnerPassword","Pass4PDF");
   
ИмяУстройства.SetValue("Permissions",61636);
   
ИмяУстройства.WriteSettings();

   
Табл.Автомасштаб=Истина;
   
Табл.Имяпринтера="Bullzip PDF Printer";

   
PDFФайл = Новый Файл(PDF_File);
    Если НЕ
PDFФайл.Существует() Тогда
       
Табл.Напечатать(Истина);
        Пока НЕ
PDFФайл.Существует() Цикл
           
ОбработкаПрерыванияПользователя();
           
//ТаймерЗадержки;
       
КонецЦикла;
    КонецЕсли;

КонецПроцедуры
📰 Актуальные новости с тегом #PDF:
  • В версию 8.3.26 добавлена возможность получения размера страницы PDF
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 30.04.2021 (Upd.18.05.2021)
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому