Libreoffice Nodejs

Posted onby admin
Libreoffice notes pdf

The SDK provides a rich set of examples in different programming languages (Java, Python, C++, LibreOffice 6.4 Basic, OLE) to illustrate the use of the API and demonstrate how to benefit from the included word processor, spreadsheet, presentation software, graphics program and database of LibreOffice 6.4.
Some of the examples need a running office instance listening on a port. If this is necessary you will get further information in the makefiles.

Every makefile contains at least one run target to execute an running example, please see the makefile output in the different example directories. Some of the examples which create a component have no run target. In these cases a document is provided which instantiates and runs the component (see the makefile output). Also the Basic examples provide documents which use and shows the implemented functionality.

Developer's Guide examplesThe Developer's Guide comes with a rich set of examples which demonstrate the use of the API in the different application areas.
Java examplesSet of simple and more complex examples which shows the use of the API from Java.
Python examplesSmall set of examples which shows the use of the API from Python.
C++ examplesSmall set of examples which shows the use of the API from C++.
LibreOffice 6.4 Basic examplesSmall set of examples which shows the use of the API from LibreOffice 6.4 Basic.
Object Linking and Embedding (OLE) examplesExamples which show the use of the API from OLE.
Common Language Infrastructure (CLI) examplesExamples which show the use of the API from the CLI.
Java examples
Text Document ExamplesDescription
BookmarkInsertionThis application connects to the office server and gets the multi component factory. An empty text document will be opened and an example text will be entered. Afterwards, some bookmarks will be inserted.
HardFormattingThis program connects to the office server and gets the multi component factory. Furthermore, an empty text document will be opened, an example text will be entered, some text attributes will be inspected, and the PropertyState will be checked from the selection.
SWriterThe program connects to the office server and gets the multi component factory. An empty text document will be created, some text will be entered, and a text table, a colored text, and text frame will be inserted.
StyleCreationThe example connects to the office server and gets the multi component factory. An empty text document will be opened, a new paragraph style will be created, and applied.
StyleInitializationThe program connects to the office server and gets the multi component factory. Thereafter, an empty text document will be opened and an example text will be entered. The paragraph collection will be used, in order to apply a different paragraph style on the paragraphs.
TextDocumentStructureThe application connects to the office server and gets the multi component factory. An empty text document will be opened, an enumeration of all paragraphs and an enumeration of all text portions will be created.
TextReplaceThe example connects to the office server and gets the multi component factory. An empty text document will be created, an example text will be inserted, and some English spelled words will be replaced with US spelled words.
GraphicsInserterThe GraphicsInserter creates a graphics object on an empty text document by setting its position, width, height, and URL.
WriterSelectorThis class gives you information on the selected objects (text range, text frame, or graphics) at a LibreOffice Server.
Spreadsheet Document ExamplesDescription
CalcAddinsThis component adds new functions to the spreadsheet application. After registering the component, the inserted functions can be found with help of the functions autopilot. The new functions are assigned to the category Add-in.
ChartTypeChangeThis class loads a LibreOffice 6.4 Calc document and changes the type of the embedded chart.
EuroAdaptionThe application connects to the office server and gets the multi component factory, opens an empty Calc document, enters an example text, sets the number format to DM, changes the number format to EUR (Euro), and uses the DM/EUR factor on each cell with content.
SCalcThe program connects to the office server and gets the multi component factory. Then an empty calc document will be opened, cell styles will be created, some data will be inserted into the sheets, and the created cell styles will be applied. Finally, a 3D chart will be inserted.
Drawing Document ExamplesDescription
SDrawThis program connects to the office server and gets the multi component factory. Afterwards, an empty text document will be created and some shapes will be inserted on the draw page.
Document Handling ExamplesDescription
DocumentConverterThe program offers a service that converts arbitrary documents to a favored document type.
DocumentLoaderThe DocumentLoader can open a new or an existing document.
DocumentPrinterThe DocumentPrinter allows you to print the favored pages of a specified document on your favored printer.
DocumentSaverThe DocumentSaver shows how to save a document and how you can change the type of your document.
UNO Component ExamplesDescription
Object InspectorThe Object Inspector is primarily an auxiliary tool for the developer, which can present information about an object of the LibreOffice 6.4 API at run-time. Depending on the object to be inspected, appropriate methods, interfaces, services, and attributes can be displayed to the developer. The methods, interfaces, services and attributes are represented in a predictable tree. If the attributes contained in an object are to be examined, the appropriate nodes in the tree can be expanded with the help of the mouse. For each non primitive object, five categories are offered to the user, as long as those are available with that object. The Object Inspector is currently available as a NetBeans project only because of major code changes. Please see the project page for further details.
MinimalComponentThis class provides a minimal UNO component. You can take this class as a base for your own components. By extensions of this class it is possible to also extend the function range of the Office.
PropTestContains a component that provides property set interfaces by means of inheriting
ToDoFor every to-do listed in a spreadsheet document, this component calculates the start date, day of week of the start date, the end date, and the day of week of the end date. All calculations are dependent upon the values of 'Needed Days', 'Due Date' and 'Status'. The columns 'Needed Days' and 'Status' are mandatory. The first to-do should be placed in row nine. The date to start the calculation should be placed in cell C6. The private holidays should be placed in cell K4/K5 and below.
All rows will be calculated up to the first empty cell in the first column. If a cell in the column 'Due Date' is colored red, you should take a look at your entries.
EmbeddedObjectContains a component that provides an example of embedded object implementation.

Additional information:

How to write a UNO component in Java
Java UNO Language Binding
Debugging Java components

Python examples
ToolPanelPocThis proof of concept extension illustrates how to create a ToolPanel in Calc.

No Additional information

C++ examples
The DocumentLoader example needs a running office server, before running this program you should invoke the office with the following command:
soffice '--accept=socket,host=localhost,port=2083;urp;StarOffice.ServiceManager'
You can also customize the mentioned host and port to your needs.
DocumentLoaderThis component works the same as the appropriate Java example, but is implemented in C++.
CounterThis demo shows how to implement a very simple UNO component and how to access the UNO component from an executable.
Remote clientThe 'uno' program is used to export an arbitrary service to other processes. In this example the service (which is built in io-module) is exported. The client component implements the interface. In the run method, it connects to the servers process and retrieves an instance and does some calls on the instance.
complextoolbarcontrolsThis example shows how to create a toolbar add-on with complex toolbar controls. It shows how to use an Image Button, a Combo Box, a Spin Field, an Edit Field, a Dropdown Box, a Toggle Dropdown Button and a normal Dropdown Button

Additional information:

How to write a UNO component in C++
C++ UNO Language Binding
C++ reference

LibreOffice 6.4 Basic examples

The example programs are embedded in LibreOffice 6.4 documents in the samples directory. To view or edit the LibreOffice 6.4 Basic source, select the appropriate document and then select Tools->Macro.

Most of the examples are stand-alone, but two of them (Creating an Index and Import/Export of ASCII Files) have an associated data file identified by a .txt file name suffix).

Some of the examples are also available in Java, you can find them in the Java section.

Changing Appearance To change the style used for certain words, you can start with the following example. This code searches for the regular expression the[a-z], which stands for the text portion the followed by exactly one lowercase letter. All occurrences of these four letters are then changed to bold characters. The same happens in the next part of the program, this time changing the appearance of all[a-z] to italic. In order for this example to work, you must execute it from an open text document.
Replacing TextIf you regularly receive documents from other people for editing, you might want to make sure that certain words are always written the same. The next example illustrates this by forcing certain words to be spelled in American English.
In order for this example to work, you must execute it from an open text document. For a real world application, it is a good idea to read the words from an external file.
Using Regular ExpressionsAnother application of automatic text modification is related to stylistic questions. Suppose your company’s policy is to avoid the use of certain words. You want to replace these words, but you cannot do that automatically because you have to find the appropriate replacement, which depends on the context. So instead of deleting or replacing the offending words automatically, you change their color to make them stand out during a subsequent manual review process.
The following example handles two kinds of unwanted wordings: those which are absolutely forbidden and must be replaced by something else, and those which are considered bad style. A subroutine is responsible for the changes. It can be used to make all words in a list appear in a certain color in the text document. To keep the lists short, we use regular expressions which provide for the variants of the words (plural, adjective etc.).
Inserting Bookmarks

The next example does something very similar. This time, however, we do not change the color of the words but insert a bookmark at each of them. You can thus use the StarOffice navigator to jump directly from word to word. Bookmarks must first be created using createInstance(). They are then inserted with insertTextContent() at the current text range.

The main difference to the preceding example is the For loop in markList(). Instead of changing the color of the current word, it creates a new bookmark, oBookmark, whose name is the current word with an integer appended. It then inserts this bookmark at the word.

Creating an IndexIndices for text documents can be created manually in LibreOffice 6.4 Writer by clicking on the words that should appear in the index. If the document is large, or if you have to generate indices for several documents, this task should be automated.
Adapting to EurolandMost of the members of the European Union will abandon their old currency in favor of the new Euro in 2001. This requires modifications to all programs using the old currencies. Since the exchange rates for the old currencies have been fixed at the end of 1999, one can already convert old data. The following program does this for all values in a table that are formatted with the currency string DM.
Import/Export of ASCII FilesYou can use the drawing facilities of StarOffice API to generate a picture from ASCII input. One application would be a hierarchical representation of a directory listing, based on textual data.
Stock Quotes UpdaterIf you want to display stock charts for certain companies, you can open up your browser every day, go to a search engine, look up the quote and copy it by hand into a table. Or you can use a program that does all this automatically. The following example relies on the sheet module. It uses URLs to obtain the current stock quotes. The quotes are displayed in sheets, one for each company. We show a line diagram and the numerical values for this company on every sheet. The functionality is hidden in the three subroutines GetValue(), UpdateValue(), and UpdateChart().
Forms and ControlsThe example document Burger Factory offers some forms and controls, which you can use to order your desired burger type, beverage, topping, and sauce. By hitting the button 'Order now!', your order will be placed.
Additional information: 6.4 Basic language binding
Object Linking and Embedding (OLE) examples
ActiveX ControlThe ActiveX control shows an example of access to UNO through COM technology. It requires a properly installed StarOffice version 6.0 or OpenOffice 1.0 or newer. This is a Lite ActiveX control so it can be used only in containers that allow the use of such controls. It can be activated with an <OBJECT> tag from a html-page to embed a document. Without any parameters a new writer document will be opened for editing. For more details please see the README.
Note: This example works only under windows and if you don't use the MS .Net C++ compiler please check the makefile and take notice of the comments.
WriterDemoThis Visual Basic Script creates an empty text document and inserts text, a table, and a text frame.
Additional information: Automation Language Binding
Common Language Infrastructure (CLI) examples
Spreadsheet ExampleThis example is written in C# and shows how Spreadsheet documents are created and filled with content. This example actually consists of three separate executables, SpreadsheetSample.exe, GeneralTableSample.exe, ViewSample.exe.
WriterDemoThis example is written in VB.NET. It creates a text document and inserts text, a table, and a text frame.
Additional information: CLI-UNO Language Binding

Node.js Express Word Document DOCX or DOC to PDF Converter Full App Using LibreOffice LibraryLive Demo of the Tool here: Api2Pdf is a powerful PDF generation API with no rate limits or file size constraints. Api2Pdf runs on Cloud Run, a serverless architecture powered by Google to scale to millions of requests while being up to 90% cheaper than alternatives. LibreOffice is a powerful office suite – its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity. LibreOffice includes several applications that make it the most powerful Free and Open Source office suite on the market. LibreOffice internally supports the following scripting languages: LibreOffice Basic. In addition, developers can use high-level languages, for example Java programming language, to control LibreOffice externally. The API reference is online at To assign a script to a new menu entry.

In this post, You will learn how to convert docx file to pdf document in JavaScript and nodejs.

Docx/doc are document file formats from Microsoft, contains images, text, tables and styles PDF files are from Adobe company, which is separate format for representing the content of images, texts and styles

There are lot of online tools to do the conversion doc to pdf. Sometimes, As a programmer you need to have a conversion of different formats in the JavaScript/NodeJS applications.

JavaScript/NodeJS offers multiple ways to convert using npm packages

  • docx-to-pdf
  • libreoffice-convert

How to Convert word document to pdf in Nodejs application

First, Create an Nodejs application from scratch.

Let’s create nodejs application from scratch using npm init -y command in new folder

Libreoffice Nodejs

This create a package.json as follows

Nodejs Libreoffice

using docx-pdf approach

docx-pdf is an simple library to convert docx to pdf document.

First, Install docx-pdf npm library

This will add a dependencies in package.json as follows

In javascript import docx-pdf using require for ES5 modules

convert objects accepts input file which is word document output file is a name of pdf document callback which has err for error messages for conversion failed and result for successful conversion result is an object contains filename attribute and value is pdf document name and path

And same code can be written with async and await keywords for asynchronous process.

Async and await

This will be useful for bigger files of sizes

Declared function which accepts input and output filename It return promise object with reject for failed conversions and resolve for successfully conversions. And, docxConverter logic is called inside async keyword with anonymous function for asynchronous processing.

Libreoffice Online Nodejs

You need to call same function with await keyword

It is simple library, only disadvantage with is not able to convert formatting styles.

libreoffice-convert npm package

libreoffice is opensource office package for managing office documents.

libreoffice-convert is an npm package in nodejs provides manipulation of word documents.

First install libreoffice-convert npm package using npm install command

Example code to convert docx to pdf using libreoffice-convert package:

sequence of steps for above code

  • Defined function with async keyword for asynchronous processing
  • import libreoffice-convert,fs and path modules into code
  • read the input file using readFile method of fs module in NodeJS
  • libre.convert convert the docx to pdf file
  • conversion code is wrapped in promise object
  • for conversion failed cases, reject promise is returned
  • For successful conversion, promise is resolved
  • Finally written output pdf file using writeFileSync method