Каталог решений - Выгрузка в PDF из 1С (Средствами OpenOffice)

Выгрузка в PDF из 1С (Средствами OpenOffice)

Выгрузка в PDF из 1С (Средствами OpenOffice)

В наличии

Функция позволяющая выполнить выгрузку табличного документа в PDF средствами OpenOffice

Категория:

Описание

Тестировалось на OpenOffice 3.x

// Функция превращает табличный документ в PDF документ
// Возвращаемое значение: тип "Строка" - имя созданного PDF файла, 0 - в случае ошибки
// Параметры: ДанныеВыгрузки - Табличный или текстовый документ, который нужно выгрузить в PDF
//            ПутьВыгрузки - тип "Строка", путь для сохраниения PDF файла (без имени и расширения файла)
//            ИмяФайлаБезРасширения - тип "Строка", имя для вновь сформированного PDF файла
//
Функция ВыгрузитьТабличныйДокументВPDF(ДанныеВыгрузки, ПутьВыгрузки, ИмяФайлаБезРасширения)       
    Если НЕ ЗначениеЗаполнено(ПутьВыгрузки) Тогда
        ПутьВыгрузки = КаталогВременныхФайлов();
    КонецЕсли;   
    ПутьВыгрузки         = ?(Прав(ПутьВыгрузки, 1) = "\", ПутьВыгрузки, ПутьВыгрузки + "\");
   
    РасширениеXSL         = ".xls";
    РасширениеPDF         = ".pdf";
    ПолноеИмяФайлаXLS     = ПутьВыгрузки + ИмяФайлаБезРасширения + РасширениеXSL;
    //Выгрузка данных печати в файл XLS   
#Если Клиент Тогда
    Состояние("Создание временного файла...");
#КонецЕсли
    Попытка
        Если         ТипЗнч(ДанныеВыгрузки) = Тип("ТабличныйДокумент") Тогда        
            ДанныеВыгрузки.Записать(ПолноеИмяФайлаXLS, "XLS");
        ИначеЕсли     ТипЗнч(ДанныеВыгрузки) = Тип("ТекстовыйДокумент") Тогда
            ДанныеВыгрузки.Записать(ПолноеИмяФайлаXLS, "XLS");
        Иначе
#Если Клиент Тогда
            Сообщить("Данные для выгрузки переданы в неподдерживаемом формате. Дальнейшее выполнение невозможно." + Символы.ПС + ОписаниеОшибки());
#КонецЕсли
            Возврат 0;
        КонецЕсли;
    Исключение
#Если Клиент Тогда
        Сообщить("Произошла ошибка при выгрузке временного файла. Возможно ошибка доступа к папке, в которую происходит запись." + Символы.ПС + ОписаниеОшибки());
#КонецЕсли
        Возврат 0;
    КонецПопытки;
   
    Попытка
#Если Клиент Тогда
        Состояние("Открытие компоненты OpenOffice...");
#КонецЕсли
        ServiceManager    = Новый COMОбъект("com.sun.star.ServiceManager");       
       
        Скрипт             = Новый COMОбъект("MSScriptControl.ScriptControl");
        Скрипт.language    = "javascript";
        Скрипт.AddObject("OpenOffice", ServiceManager);
       
        //Открытие временного файла без отображения его окна
#Если Клиент Тогда           
        Состояние("Открытие временного файла...");
#КонецЕсли
        Скрипт.eval("Массив=new Array()");       
        Массив             = Скрипт.eval("Массив");       
        Скрипт.eval("Массив[0] = OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
        Скрипт.eval("Массив[0].Name     = 'Hidden'");
        Скрипт.eval("Массив[0].Value = true");
       
        Скрипт.AddCode("function SetItem(ind,val){Массив[ind]=val}");       
        Скрипт.AddObject("ServiceManager",ServiceManager);
        Desktop         = ServiceManager.createInstance("com.sun.star.frame.Desktop");       
        Document         = Desktop.LoadComponentFromURL("file:///" + ПолноеИмяФайлаXLS, "_blank", 0, Массив);
       
        //Сохранение в PDF встроенными средствами OpenOffice
#Если Клиент Тогда           
        Состояние("Запись в PDF...");
#КонецЕсли
        Скрипт.eval("Массив2=new Array()");       
        Массив2     = Скрипт.eval("Массив2");       
        Скрипт.eval("Массив2[0] = OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");       
        Скрипт.eval("Массив2[0].Name  = 'FilterName'");
        Скрипт.eval("Массив2[0].Value = 'writer_pdf_Export'");
       
        ПолноеИмяФайлаPDF         = "file:///" + СтрЗаменить(ПолноеИмяФайлаXLS, РасширениеXSL, РасширениеPDF);
        ПолноеИмяФайлаPDF         = СтрЗаменить(ПолноеИмяФайлаPDF, ВРег(РасширениеXSL), РасширениеPDF);
        ПолноеИмяФайлаPDF        = СтрЗаменить(ПолноеИмяФайлаPDF, "\", "/");       
               
        Document.storeToURL(ПолноеИмяФайлаPDF, Массив2);
        Document.close(-1);        //Закрыть документ
       
        //Контрольная очистка переменных
        Document     = Неопределено;
        Desktop     = Неопределено;
       
        //Удаление временного файла
#Если Клиент Тогда           
        Состояние("Удаление временного файла...");
#КонецЕсли       
        Попытка
            УдалитьФайлы(ПолноеИмяФайлаXLS);
        Исключение
#Если Клиент Тогда           
            Сообщить("Произошла ошибка при удалении временного файла. Возможно, потребуется удалить его вручную." + Символы.ПС + ОписаниеОшибки());
#КонецЕсли
        КонецПопытки;
       
        ПолноеИмяФайлаPDF = СтрЗаменить(ПолноеИмяФайлаPDF, "file:///", "");
        ПолноеИмяФайлаPDF = СтрЗаменить(ПолноеИмяФайлаPDF, "/", "\");
#Если Клиент Тогда
        Состояние("Выгрузка выполнена.");
        Предупреждение("Выгрузка выполнена." + Символы.ПС + ПолноеИмяФайлаPDF);       
#КонецЕсли
        Возврат ПолноеИмяФайлаPDF;
    Исключение
        Document.close(-1);
#Если Клиент Тогда
        Предупреждение(ОписаниеОшибки());
#КонецЕсли
        Возврат 0;
    КонецПопытки   
КонецФункции


has been added to your cart:
Оформление заказа