Как открыть pdf файл в openoffice
Возникла задача отправлять счета почтой. PDFcreator не подошёл поскольку не удалось вместить счёт на одну страницу по ширине. Решил попробовать OpenOffice. Как сохранять в PDF нашёл быстро, а вот как уместить счёт на одну страницу вширь искал долго.
2010.07.04 В версии 1С 8.2.232 появилась возможность сохранять табличный документ в xls файл на сервера под линуксом. А вот работать с Опеном офисом из-под линукса пока не получается.
Собственно комментари ненужны. Вот весь код. Самое интересное это бодание со стилями страниц в Опене Офисе. Жаль что этот фрагмент работает только на клиенте. На сервере вопрос не решается :-(
Процедура КнопкаВыполнитьНажатие ( Кнопка )
Если Письмо . Основание . Пустая () Тогда
Возврат
КонецЕсли;
// Открыть OpenOffice
Попытка
ServiceManager = Новый COMОбъект ( "com.sun.star.ServiceManager" );
Исключение
Возврат // опен офис не установлен :-(
КонецПопытки;
// получим печатную форму и запишем её во временный XLS файл
Заказ = Письмо . Основание . ПолучитьОбъект ();
//Получим печатную форму
Расшифровка =Новый Структура ;
Расшифровка . Вставить ( "СсылкаНаВнешнююОбработку" , Константы . ПФСчетаДляКлиента . Получить ());
Расшифровка . Вставить ( "ВидПечатнойФормы" , Перечисления . ВидыДополнительныхВнешнихОбработок . ПечатнаяФорма );
Расшифровка . Вставить ( "НомерСтроки" , 1 );
тд = УниверсальныеМеханизмы . НапечататьВнешнююФорму ( Заказ , Расшифровка );
ВременныйФайл = ПолучитьИмяВременногоФайла ();
ВременныйФайл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 , НастройкиОткрытия );
НастройкиСохранения = Новый 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 );
Исключение
КонецПопытки;
Специальные предложения
Это я так, к слову ;)
(0) А вообще "+". Полезная информация - пригодится
Если бы еще и для 7.7.
>Жаль что этот фрагмент работает только на клиенте.
>На сервере вопрос не решается :-(
т.е не работает какая комбинация :
1) 1С на терминальном сервере - ОО локальный
2) 1С стоит локально база сетевая - ОО локальный
3) 1С стоит локально база сетевая - ОО на терминальном сервере
4) 1С и ОО на терминальном сервере
?
(3) Приведённый мной код не будет работать на сервере 1С:Предприятия поскольку:
1. на сервере нельзя сохранить таблицу как XLS файл. И на виндовом и на линуксовом.
2. на linux сервере нет доступа к API других программ.
Вариант базы или терминальность клиента значения не имеет. Важно чтобы PDF создавался на клиенте 1С и на этом же компе стоял Опен офис.
А как быть если нужно установить запрем на копирование.
Пытаюсь добавить так:
НастройкиСохранения = Новый COMSafeArray("VT_VARIANT", 2);
PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
PropertyValue.Name = "FilterName";
PropertyValue.Value = "calc_pdf_Export";
НастройкиСохранения.SetValue(0, PropertyValue);
PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
PropertyValue.Name = "FilterData";
МассивПараметра = Новый COMSafeArray("VT_VARIANT", 41);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 0, "UseLosslessCompression", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 1, "Quality", 0, 90);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 2, "ReduceImageResolution", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 3, "MaxImageResolution", 0, 300);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 4, "UseTaggedPDF", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 5, "SelectPdfVersion", 0, 0);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 6, "ExportNotes", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 7, "ExportBookmarks", 0, true);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 8, "OpenBookmarkLevels", 0, -1);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 9, "UseTransitionEffects", 0, true);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 10, "IsSkipEmptyPages", 0, true);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 11, "IsAddStream", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 12, "FormsType", 0, 0);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 13, "ExportFormFields", 0, true);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 14, "HideViewerToolbar", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 15, "HideViewerMenubar", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 16, "HideViewerWindowControls", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 17, "ResizeWindowToInitialPage", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 18, "CenterWindow", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 19, "OpenInFullScreenMode", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 20, "DisplayPDFDocumentTitle", 0, true);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 21, "InitialView", 0, 0);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 22, "Magnification", 0, 0);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 23, "Zoom", 0, 100);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 24, "PageLayout", 0, 0);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 25, "FirstPageOnLeft", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 26, "InitialPage", 0, 1);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 27, "Printing", 0, 2);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 28, "Changes", 0, 0);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 29, "EnableCopyingOfContent", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 30, "EnableTextAccessForAccessibilityTools", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 31, "ExportLinksRelativeFsys", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 32, "PDFViewSelection", 0, 0);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 33, "ConvertOOoTargetToPDFTarget", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 34, "ExportBookmarksToPDFDestination", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 35, "_OkButtonString", 0, "");
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 36, "EncryptFile", 0, false);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 37, "DocumentOpenPassword", 0, "123456789");
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 38, "RestrictPermissions", 0, true);
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 39, "PermissionPassword", 0, "123456789");
ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 40, "", 0);
PropertyValue.Value = МассивПараметра;
НастройкиСохранения.SetValue(1, PropertyValue);
Процедура ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, Индекс, Первый, Второй, Третий = Неопределено);
Параметр = Новый COMSafeArray("VT_VARIANT", 4);
Параметр.SetValue(0, Первый);
Параметр.SetValue(1, Второй);
Если Третий <> Неопределено Тогда
Параметр.SetValue(2, Третий);
КонецЕсли;
Параметр.SetValue(3, 0);
МассивПараметра.SetValue(Индекс, Параметр);
Сама идея иметь pdf-файл, который было бы так же легко редактировать, как и его исходную копию в виде офисного документа, наверное, не один раз возникала у тех людей, которые составляют или редактируют официальные документы. Так что если вы относитесь к таким людям или же у вас другие причины для необходимости легко редактировать pdf-файл, то в данной статье вы найдете способ, как это можно сделать в OpenOffice.
OpenOffice это один из известных бесплатных офисных пакетов, для которого существует немало полезных специфических расширений. Поэтому не удивительно, что в версии от Oracle, а в последствие и в версиях от Apache появилось расширение для создания легко редактируемого pdf-файла под названиями Oracle PDF Import Extension и PDF Import for Apache OpenOffice соответственно.
Примечание: Данное расширение поставляется бесплатно и легко устанавливается в имеющемся пакете OpenOffice на вашем компьютере (ссылки для скачивания находятся в конце статьи).
PDF Import extension позволяет OpenOffice создавать гибридный файл на основе форматов pdf и odf. Этот гибридный pdf файл будет так же содержать в себе и файл источник odf, что позволит OPenOffice открывать и редактировать его без потери каких-либо макетов отображения, закладок, гиперссылок или форматирования текста. Тем не менее, несмотря на слово "гибридный", созданный файл будет иметь стандартное расширение pdf и будет открываться в любой программе для чтения pdf, такой как Adobe Reader и PDF-XChange.
Для создания гибридного pdf файла, вам необходимо запустить OpenOffice с установленным расширением PDF Import extension, после чего открыть "Файл > Экспорт в PDF. ", а затем в появившемся диалоговом окне с настройками экспорта поставить галочку напротив пункта "Создать гибридный файл" (название пункта может немного отличаться в зависимости от версий, но, обычно, после установки расширения, пункт размещается в самом низу окна, так что его будет достаточно просто найти). И в конце нажать кнопку "Экспорт". Пример диалогового окна с настройками показан ниже:
Если гибридный pdf файл экспортируется из OpenOffice Writer, то его можно открывать прямо в Writer. Если файл экспортируется из OpenOffice Impress, то открывать его необходимо в Impress. И аналогичным образом для других приложений.
Подход с использованием гибридного файла позволяет не только сохранить время, которое было бы потрачено на постоянное экспортирование документов, но и в разы облегчить саму подготовку различной документации. Тем не менее, необходимо признать, что у такого подхода есть один минус - это невозможность быстро отличить гибридный файл от обычного pdf-файла. Однако, эту проблему легко решить добавлением различного рода приставок, таких как "-odf.pdf" в конце файла.
PDF Import for Apache OpenOffice:
Oracle PDF Import Extension:
Теперь, вы знаете как создать редактируемый pdf-файл в OpenOffice.
У вас есть полезная информация, которой вы бы хотели поделиться с читателями, или же вы обнаружили неточность в тексте? Оставьте комментарий!
Чтобы открыть существующий документ, выберите Файл > Открыть или нажмите на значок Открыть на панели инструментов Стандартная, или нажмите Control+O.
увеличить изображение
Рис. 3.1. Значок открытия документов на панели инструментов
Появится диалог Открыть. рис. 3.2 показывает Windows XP версию этого диалогового окна.
Форматы файлов
Форматы файлов по умолчанию
- Идите Сервис > Параметры > Загрузка/сохранение > Общие. (См. рис. 3.3.)
- В секции Формат файла по умолчанию на этой странице выберите тип документа (например, "Текстовый документ") и формат файла из списка Всегда сохранять как.
- Повторите для каждого типа документа, по необходимости.
- Нажмите OK для сохранения Ваших изменений.
Примечание Если параметр "Предупреждать при сохранении в формате, отличном от OpenDocument или формате по умолчанию" установлен в диалоговом окне Сервис > Параметры > Загрузка/сохранение > Общие ( рис. 3.3), может быть показан предупреждающий диалог о возможности потери некоторых элементов форматирования. В большинстве случаев, никакой потери форматирования не произойдет, таким образом Вы можете найти это предупреждение раздражающим и захотеть отключить его.
Java Runtime Environment требуется для использования фильтров мобильных устройств для AportisDoc (Palm), Pocket Word и Pocket Excel.
Открытие текстовых документов
- Microsoft Word 6.0/95/97/2000/XP) (.doc, .dot)
- Microsoft Word 2003 XML (.xml)
- Microsoft WinWord 5 (.doc)
- Форматы StarWriter (.sdw, .sgl, и .vor)
- Документы WordPerfect (.wpd)
- WPS 2000/Office 1.0 (. wps )
- Ichitaro 8/9/10/11 (.jtd и .jtt)
- DocBook (.xml)
- AportisDoc (Palm) (.pdb)
- Hangul WP 97 (.hwp)
- .rtf, .txt, .csv
Открытие электронных таблиц
В дополнение к форматам OpenDocument (.ods и . ots ), Calc 2.0 может открывать форматы, используемые OpenOffice 1.x (.sxc, .stc), и следующие форматы электронных таблиц:
- Microsoft Excel 97/2000/XP (.xls, .xlw, и .xlt)
- Microsoft Excel 4.x–5.0/95 (.xls, .xlw, и .xlt)
- Microsoft Excel 2003 XML (.xml)
- Data Interchange Format (.def)
- dBase (.dbf)
- .htm и .html файлы, включая запросы к веб-страницам
- Quattro Pro 6.0 (.wb2)
- Rich Text Format (.rtf)
- Text CSV (.csv и .txt)
- Lotus 1-2-3 (.wk1 и .wk4)
- StarCalc (.sdc и .vor)
- SYLK (. slk )
- Pocket Excel (pxl)
Примечание Java Runtime Environment требуется для использования фильтров мобильных устройств для AportisDoc (Palm), Pocket Word и Pocket Excel.
Открытие презентаций
В дополнение к форматам OpenDocument (.odp, .odg, и . otp ), Impress 2.0 может открывать форматы, используемые OpenOffice 1.x (.sxi, .sti), и следующие форматы презентаций:
- Microsoft PowerPoint 97/2000/XP (.ppt, . pps , и . pot )
- StarDraw и StarImpress (.sda, .sdd, .sdp и .vor)
- CGM - Computer Graphics Metafile (. cgm )
Открытие графических файлов
В дополнение к форматам OpenDocument (.odg и .otg), Draw 2.0 может открывать форматы, используемые OpenOffice 1.x (.sxd .std), и следующие графические форматы:
Чтобы открыть существующий документ, выберите Файл > Открыть или нажмите на значок Открыть на панели инструментов Стандартная, или нажмите Control+O.
увеличить изображение
Рис. 3.1. Значок открытия документов на панели инструментов
Появится диалог Открыть. рис. 3.2 показывает Windows XP версию этого диалогового окна.
Форматы файлов
Форматы файлов по умолчанию
- Идите Сервис > Параметры > Загрузка/сохранение > Общие. (См. рис. 3.3.)
- В секции Формат файла по умолчанию на этой странице выберите тип документа (например, "Текстовый документ") и формат файла из списка Всегда сохранять как.
- Повторите для каждого типа документа, по необходимости.
- Нажмите OK для сохранения Ваших изменений.
Примечание Если параметр "Предупреждать при сохранении в формате, отличном от OpenDocument или формате по умолчанию" установлен в диалоговом окне Сервис > Параметры > Загрузка/сохранение > Общие ( рис. 3.3), может быть показан предупреждающий диалог о возможности потери некоторых элементов форматирования. В большинстве случаев, никакой потери форматирования не произойдет, таким образом Вы можете найти это предупреждение раздражающим и захотеть отключить его.
Java Runtime Environment требуется для использования фильтров мобильных устройств для AportisDoc (Palm), Pocket Word и Pocket Excel.
Открытие текстовых документов
- Microsoft Word 6.0/95/97/2000/XP) (.doc, .dot)
- Microsoft Word 2003 XML (.xml)
- Microsoft WinWord 5 (.doc)
- Форматы StarWriter (.sdw, .sgl, и .vor)
- Документы WordPerfect (.wpd)
- WPS 2000/Office 1.0 (. wps )
- Ichitaro 8/9/10/11 (.jtd и .jtt)
- DocBook (.xml)
- AportisDoc (Palm) (.pdb)
- Hangul WP 97 (.hwp)
- .rtf, .txt, .csv
Открытие электронных таблиц
В дополнение к форматам OpenDocument (.ods и . ots ), Calc 2.0 может открывать форматы, используемые OpenOffice 1.x (.sxc, .stc), и следующие форматы электронных таблиц:
- Microsoft Excel 97/2000/XP (.xls, .xlw, и .xlt)
- Microsoft Excel 4.x–5.0/95 (.xls, .xlw, и .xlt)
- Microsoft Excel 2003 XML (.xml)
- Data Interchange Format (.def)
- dBase (.dbf)
- .htm и .html файлы, включая запросы к веб-страницам
- Quattro Pro 6.0 (.wb2)
- Rich Text Format (.rtf)
- Text CSV (.csv и .txt)
- Lotus 1-2-3 (.wk1 и .wk4)
- StarCalc (.sdc и .vor)
- SYLK (. slk )
- Pocket Excel (pxl)
Примечание Java Runtime Environment требуется для использования фильтров мобильных устройств для AportisDoc (Palm), Pocket Word и Pocket Excel.
Открытие презентаций
В дополнение к форматам OpenDocument (.odp, .odg, и . otp ), Impress 2.0 может открывать форматы, используемые OpenOffice 1.x (.sxi, .sti), и следующие форматы презентаций:
- Microsoft PowerPoint 97/2000/XP (.ppt, . pps , и . pot )
- StarDraw и StarImpress (.sda, .sdd, .sdp и .vor)
- CGM - Computer Graphics Metafile (. cgm )
Открытие графических файлов
В дополнение к форматам OpenDocument (.odg и .otg), Draw 2.0 может открывать форматы, используемые OpenOffice 1.x (.sxd .std), и следующие графические форматы:
Читайте также: