Имя: Пароль:
1C
1С v8
Создание PDF из OpenOffice
0 sergey198
 
18.08.11
15:12
тд = ТабДок;
   ВременныйФайл =ПолучитьИмяВременногоФайла();
   ВременныйФайлXLS =ВременныйФайл + ".xls";
   ВременныйФайлPDF =ВременныйФайл + ".pdf";
   тд.Записать(ВременныйФайлXLS, ТипФайлаТабличногоДокумента.XLS97);

   // Преобразовываем временный xls файл В PDF
   Desktop        = ServiceManager.createInstance("com.sun.star.frame.Desktop");

   НастройкиОткрытия = Новый COMSafeArray("VT_VARIANT", 1);
   PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
   PropertyValue.Name = "Hidden";
   PropertyValue.Value = Истина;
   НастройкиОткрытия.SetValue(0, PropertyValue);
   ВременныйФайлXLS_какУРЛ = "file:///" + СтрЗаменить(ВременныйФайлXLS, "\", "/"); // приводим путь к файлу из виндового формата в опен офисный

   // Откроем файл в опене офисе
   ОпенОфис = Desktop.LoadComponentFromURL(ВременныйФайлXLS_какУРЛ, "_blank", 0, НастройкиОткрытия);

   //ПараметрыСтраницы = ОпенОфис.createInstance("com.sun.star.style.PageStyle");
   //ПараметрыСтраницы.ScaleToPagesX = 1;
   //
   // Установим масштаб, чтобы счёт помещался на одной странице вширь
   // страниц почему-то много, поэтому устанавливаем масштаб для всех
   Стили = ОпенОфис.StyleFamilies.getByName("PageStyles");
   Для поз = 0 по Стили.count - 1 Цикл
       МойСтиль = Стили.getByIndex(поз);
       МойСтиль.ScaleToPagesX = 1; // уместить на одной странице вширь
       //МойСтиль.PageScale = 50; // масштаб 50%
   КонецЦикла;

   НастройкиСохранения = Новый COMSafeArray("VT_VARIANT", 1);
   PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
   PropertyValue.Name = "FilterName";
   PropertyValue.Value = "calc_pdf_Export";
   НастройкиСохранения.SetValue(0, PropertyValue);

   ВременныйФайлPDF_какУРЛ = "file:///" + СтрЗаменить(ВременныйФайлPDF, "\", "/"); // приводим путь к файлу из виндового формата в опен офисный
   ОпенОфис.storeToURL(ВременныйФайлPDF_какУРЛ, НастройкиСохранения); // сохранили PDF файл
   ОпенОфис.close(-1);
   ОпенОфис = Неопределено;

   // С опеном офисом разобрались. Прикрепляем вложение к письму и удаляем временные файлы.
   //Файл = Новый Файл(ВременныйФайлPDF);
   //объектПисьмо = Письмо.ПолучитьОбъект();
   //стрВложение = объектПисьмо.Вложения.Добавить();
   //стрВложение.ИмяФайла = "Счёт " + Строка(Заказ.Номер) + ".pdf";
   //стрВложение.Файл = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ВременныйФайлPDF));
   //объектПисьмо.Записать();
   Попытка
       УдалитьФайлы(ВременныйФайлXLS);
       УдалитьФайлы(ВременныйФайлPDF);
   Исключение
   КонецПопытки;


После этого выскакивает ошибка:
Произошла исключительная ситуация ([automation bridge] ): com.sun.star.task.ErrorCodeIOException
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан