Desarrollo/Desarrollo de extensiones
TDF LibreOffice en español Document Liberation Project Blogs comunitarios Weblate Nextcloud Redmine Preguntas y respuestas Donar
Introducción
Las extensiones hacen posible ampliar la funcionalidad de LibreOffice sin modificar el propio código fuente de LibreOffice. LibreOffice tiene tres clases de extensiones.
- Si sabe programar, puede usar varios lenguajes para desarrollar extensiones de LibreOffice usando la API de componentes UNO. Los lenguajes de programación admitidos son Basic, Python, JavaScript, Java, BeanShell y C++. El código y los datos se empaquetan como archivos
.oxt
y se pueden compartir en el repositorio de extensiones de LibreOffice.
- Las extensiones son la forma preferida por los administradores de sistemas para modificar la configuración predeterminada. Una guía para desarrollar extensiones de configuración está disponible en formato PDF o ODT. Una muestra de Extensión de configuración OXT acompaña a la guía.
- También hay extensiones especiales de Calc conocidas como Complementos (Add-Ins) que agregan funciones de hoja de cálculo a Calc. Como componentes UNO, puede proporcionar nuevas implementaciones de la funcionalidad existente o componentes especializados como Calc Add-Ins, Add-Ons, DataPilots, Chart Add-Ins o componentes lingüísticos: Corrector ortográfico, Hyphenator o Thesaurus (vea la Documentación de Add-Ins).
- También puede empaquetar extensiones para Plantillas, Galería y Textos automáticos. Vea los ejemplos en la sección «Ejemplos» más abajo.
Acerca de las plantillas
Puede que haya notado que en algunos ejemplos las plantillas se ponen en una carpeta llamada "templates", mientras que en algunos otros ejemplos las plantillas se ponen 3n una carpeta llamada "template". No se confunda con estos nombres. Ambos funcionarán siempre que usted especifique el nombre correcto que haya usado en el archivo Paths.xcu. Tenga en cuenta que el archivo Paths.xcu, el "%origin%"
como en <node oor:name="%origin%/template" oor:op="fuse"/>
se refiere a la localización de la extensión una vez que ha sido instalada. Por ejemplo:
file:///<path-to-your-libreoffice-installation-or-config>/user/uno_packages/cache/uno_packages/lu168780135zflp.tmp_/<extenion_filename>.oxt
Así, "template" como en <node oor:name="%origin%/template" oor:op="fuse"/>
debería ser la ruta relativa a la raíz de su extensión descomprimida. Esto significa que si coloca las plantillas reales en una carpeta llamada "my_templates" al organizar la estructura de la extensión, entonces en Paths.xcu debería ser <node oor:name="%origin%/my_templates" oor:op="fuse"/>
.
Además, tenga en cuenta que "Template" como se muestra en <node oor:name="Template" oor:op="fuse" oor:mandatory="true">
en el archivo Paths.xcu, indica que esta configuración de ruta es para la categoría "Template", que se define en unotools/source/config/pathoptions.cxx (junto con Addin, AutoCorrect, AutoText, Dictionary, Gallery. etc)
Recursos
En un esfuerzo por no duplicar la información, puede consultar la documentación de OpenOffice, vea por ejemplo la versión de esta página en la wiki de OpenOffice. Todavía son en gran medida compatibles, pero se debe realizar una verificación adicional ya que LibreOffice avanza rápidamente (consulte las Notas de compatibilidad a continuación).
Para una descripción completa de las extensiones y el archivo .oxt
, vea la Guía del desarrollador.
Los recursos actuales se están consolidando actualmente en las páginas de ayuda de LibreOffice.
Antes de empezar, debe instalar el SDK.
Tutoriales y ejemplos
Para comenzar, puede echar un vistazo a los tutoriales o el código fuente de la extensiones de ejemplo más adelante. El código fuente de LibreOffice también tiene una colección de ejemplos del SDK.
Otra forma de encontrar ejemplos es descomprimir el archivo .oxt
de una extensión existente e inspeccionar su contenido.
Basic
Java
- Starter Extension Extensión de inicio para ser utilizada como base para extensiones propias
- Sidebar Extension Similar a la extensión de inicio, pero para crear una barra lateral propia
- NOA-libre es un envoltorio de Java liviano orientado a objetos alrededor de la API de UNO de LibreOffice, que proporciona una abstracción de alto nivel de muchas interfaces de UNO.
- UNOHelper ofrece funciones auxiliares para trabajar con la API de UNO. Envuelve las funciones de uso común de la API de UNO para un uso más fácil.
- Sistema de plantillas de LibreOffice (LOTS) es una gran extensión de Java con funciones mejoradas de plantillas, formularios y autotexto.
Complemento de Eclipse
TDF ofrece el complemento de Eclipse LOEclipse que ayuda a desarrollar extensiones/componentes de LibreOffice en Java. Puede encontrarlo en Eclipse Marketplace.
Python
- unodit Automatiza algunas de las tareas tediosas con diálogos para ayudarlo a escribir su propia extensión para LibreOffice en Python
- el LibreOffice Love Letter Writer
Consulte también las páginas en Desarrollo de extensiones de Python, Guía de macros Python y Diseño y desarrolo de aplicaciones Python.
C++
- Desarrollo de extensiones LibreOffice con C++ - Parte 1 - Conocer UNO;
- las extensiones de búsqueda de LibreOffice que agregan una entrada de menú contextual para buscar en línea el texto seleccionado]
Ejemplos sin código
- El repositorio de github de Andreas Mantke extensionbook contiene una colección de ejemplos sin código explicando como empaquetar un conjunto de colores, plantillas, texto automático y galerías en una extensión.
- El repositorio de github de Kevin Suo lo_l10n_templates es un ejemplo de como convertir un conjunto de plantillas en una extensión de LibreOffice localizada.
Notas de compatibilidad
Los desarrolladores de LibreOffice son conservadores cuando se trata de cambios en la API pública (UNO) y, por lo tanto, la mayoría de las extensiones escritas para OpenOffice.org o Apache OpenOffice seguirán funcionando con LibreOffice. Si se producen cambios, se indican en ReleaseNotes (cambios de API en 4.2, 4.1 y 4.0).
- La dependencia
OpenOffice.org-minimal-version
establece que una extensión funciona en las versiones de OpenOffice.org especificadas, así como en las versiones de LibreOffice que corresponden al menos a la versión de referencia de OpenOffice.org especificada. Todas las versiones de LibreOffice hasta la 4.2.3 informan que corresponden a la versión de referencia de OpenOffice.org 3.4, mientras que las versiones de LibreOffice desde 4.2.4 informan que corresponden a la versión de referencia de OpenOffice.org 4.1.
- Usando esta dependencia, la extensión declara que solo usa funciones que se encuentran en la versión de referencia de OpenOffice.org especificada (y que, en consecuencia, funciona en todos los productos, no solo para OpenOffice.org en sí).
- Si una extensión utiliza funciones específicas de LibreOffice, a partir de LibreOffice 3.5 puede especificar una nueva dependencia
LibreOffice-minimal-version
con el espacio de nombreshttp://libreoffice.org/extensions/description/2011
. Su atributovalue
requerido (sin espacio de nombres) especifica la versión de LibreOffice con soporte mínimo; no debe contener un número de versión micro y no debe ser inferior a3.5
.
- El atributoname
generalmente requerido (con el espacio de nombreshttp://openoffice.org/extensions/description/2006
) debe ser “LibreOffice version
” (dondeversion
es el valor de versión dado).
- Se pueden encontrar ejemplos en core/tree/desktop/test/deployment/dependencies: loversion35.oxt o loversion36.oxt.
- Si una extensión está destinada a una versión específica de LibreOffice, a partir de LibreOffice 7.0 puede especificar una nueva dependencia
LibreOffice-maximal-version
con el espacio de nombreshttp://libreoffice.org/extensions/description/2011
además de la dependenciaLibreOffice-minimal-version
.
- Esto debe ser raramente indicado.