Имя: Пароль:
1C
1С v8
Сохранение в PDF через Open Office
0 Шпунтик
 
05.09.12
09:15
есть функция сохраняющая в PDF через Open Office

  Если НЕ ЗначениеЗаполнено(ПутьВыгрузки) Тогда
       ПутьВыгрузки = КаталогВременныхФайлов();
   КонецЕсли;  
   ПутьВыгрузки         = ?(Прав(ПутьВыгрузки, 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, Массив);
   
   
       
   Стили = Document.StyleFamilies.getByName("PageStyles");
   Для поз = 0 по Стили.count - 1 Цикл
       МойСтиль = Стили.getByIndex(поз);
       МойСтиль.ScaleToPagesX= 1; // уместить на одной странице вширь
       //МойСтиль.PageScale = 50; // масштаб 50%
   КонецЦикла;        
       //Сохранение в 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     = Неопределено;
     
       //Удаление временного файла
//.............................

и все бы хорошо но картинка сохраняется горизонтально (как портрет)
а надо вертикально альбомная. Подскажите пожалуйста функцию которая разворачивает картинку на этапе работы с Open Office
AdBlock убивает бесплатный контент. 1Сергей