|
Сохранение в 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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |