Skip to content

webstorage119/1c_libreoffice_sample

 
 

Repository files navigation

ОБЩИЕ СВЕДЕНИЯ

Репозиторий содержит исходные файлы для сборки шаблона внешней компоненты для "1С:Предприятие" под Linux, взаимодействующей с LibreOffice API. Внешняя компонента открывает LibreOffice Writer и записывает в новый файл строку "Hello, LibreOffice!!"

Компонента состоит из 2-х частей: 1). Статическая библиотека libhello.a экспортирует функцию hello() которая выполняет действия с LibreOffice 2). Динамическая библиотека libSampleAddIn.so, реализующая внешнюю компоненту 1С. Библиотека, в числе прочих, экспортирует метод Привет(), который вызывает функцию hello() библиотеки libhello.a.

Дополнительно, при компиляции библиотеки libhello.a компилируется исполняемый файл "libhello_test", который позволяет проверить библиотеку libhello_a из строки терминала. В каталоге epf репозитория содержится обработка для проверки компоненты libSampleAddIn.so: она подключает внешнюю компоненту и вызывает функцию Привет().

При разработке внешней компоненты за основу был взят нестандартный шаблон. Ссылка на исходный шаблон: https://github.com/Infactum/addin-template

LibreOffice Developer Guide: https://wiki.documentfoundation.org/Documentation/DevGuide

СБОРКА ВНЕШНЕЙ КОМПОНЕНТЫ

  1. Импорт проекта из github Если не установлен git, нужно его установить Например: sudo apt install git

Клонировать репозиторий проекта. Например, в домашний каталог, подкаталог liboffice_sample, можно выполнив в терминале команду: git clone https://github.com/Dajigin/1c_libreoffice_sample.git ~/liboffice_sample

  1. Установка инструментов:

2.1 Для сборки и тестирования нужны: набор компиляторов gcc, компилятор g++, пакет uuid-dev, утилиты сборки make и cmake, Libre Office SDK.

Примечание: для AstraLinux: необходимо раскомментировать репозиторий repository-base в файле:
sudo nano /etc/apt/sources.list
после чего выполнить:
sudo apt update

Для установки на deb-based системах  можно запустить файл install_tools_deb.sh из склонированного репозитория, который установит инструменты.		

2-2 Добавление символических ссылок на библиотеки в каталоге /usr/lib или /usr/lib64 После установки основных компонент необходимо выяснить, куда установлен LibreOffice (например, используя команду терминала whereis loffice). Она вернет несколько расположений (в т.ч. символические ссылки). Как правило, он расположен в одном из подкаталогов /usr/lib, /usr/lib64 или /opt/ Необходимо изменить путь к LibreOffice SDK (переменная OFFICE_SDK) в одном из файлов loffice_libs_xx.sh, где xx - разрядность вашей системы, после чего запустить его на выполнение с правами sudo.

В результате в каталоге библиотек (/usr/lib или /usr/lib64) будут созданы символические ссылки на бииблиотеки LibreOffice, используемые компонентой.
  1. Сборка

3.1 В первую очередь собирается статическая библиотека libhello.a

Откройте терминал, перейдите в каталог /libhello репозитория.
В Makefile в переменной PRJ измените путь к LibreOffice SDK на свой.
Из терминала запустите файл инициализации окружения LibreOffice SDK (Находится в каталоге SDK. Например, у меня здесь: /usr/lib64/libreoffice/sdk/setsdkenv_unix). У вас может быть другой путь.
!! Сборку необходимо выполнять  в той же сессии терминала, в которой инициализировался SDK
Выполните в терминале в каталоге /libhello команду "make clean", затем - "make"
Результат компиляции помещается в каталог /libhello/bin/
Проверить библиотеку можно запустив на исполнение libhello_test из этого каталога. Должно открыться окно Writer и вывестись приветственное сообщение.

3.2 Затем собирается динамическая библиотека внешней компоненты Перейдите в каталог libhello_extcomp Выполните скрипт build.sh Будет выполнена компиляция библиотеки libSampleAddIn.so в каталог tmp (каталог будет создан при отсутствии). Для проверки работоспособности внешней компоненты можно открыть в 1С обработку /epf/ПриветЛибреОфис.epf, указав в поле обработки библиотеку libSampleAddIn.so

About

Пример использования API LibreOffice из внешней компоненты 1C (Linux)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 70.4%
  • C 17.6%
  • Makefile 6.2%
  • CMake 3.2%
  • Shell 2.6%