Jump to content

Universal Network Objects

From Alfawiki
Universal Network Objects (UNO)
Company typeSoftware component model
IndustrySoftware development
ProductsComponent model for OpenOffice.org and LibreOffice

Universal Network Objects (UNO) serves as the component model underlying the OpenOffice.org and LibreOffice suites. This interface-driven architecture is crafted to facilitate interoperability among various programming languages, object models, and hardware platforms, whether operating locally, across LANs, or through Internet connections.

Programmers have the ability to implement or utilize UNO components from any language that supports existing language bindings. Fully supported bindings are available for C++ (subject to compiler specifics), Java, Object REXX, Python, and Tcl. Additionally, read-only bindings exist for StarOffice Basic, OLE Automation, and the .NET Common Language Infrastructure, making this API a common choice for macro development.

UNO components operate within the UNO Runtime Environment (URE).

The UNO implementation in Apache OpenOffice is provided under the terms of the Apache License Version 2, distributed as free and open-source software.

UNO in function invocation

Typical scenarios include external applications invoking LibreOffice through UNO to export an ODT file as PDF or to import and convert a DOCX document. Another frequent application is manipulating cells and formulas within LibreOffice Calc spreadsheets.

Prominent tools utilizing this capability are Docvert, JODConverter, and unoConv.

UNO for Add-On development

Custom UNO components can be developed and embedded into OpenOffice/LibreOffice as "Add-Ons," thereby enhancing features and integrating seamlessly with menus and toolbars.

The integration process generally follows three key stages:

  1. Registering new components using the unopkg utility.
  2. Incorporating components as services with support from ProtocolHandler and JobDispatch.
  3. Altering the user interface by creating an XML file that defines menu or toolbar modifications.

An example of such an application is jOpenDocument.

External links

Apache OpenOffice
LibreOffice
Language bridges (native for Java and Python)