Test LibreOffice automatically

Mac Variant 1

In Mac OS X, the call is /Applications/LibreOffice.app/Contents/MacOS/soffice. This call is suitable for Python and enclosed via popen in a try/expect block to catch any errors and so that the script can inform the user if LibreOffice fails to start.

Time for a Conversation

Once the LibreOffice application is running, the Python script can take over the remote control. The script in line 30 uses the uno.getComponentContext() method from the Python uno library and creates a general local context object. The script then uses this to create a com.sun.star.bridge.UnoUrlResolver type resolver object in line 31. This object provides a method by which the script can attach to the LibreOffice socket.

As it is unclear whether LibreOffice has already started, the actual connection attempt in lines 36 to 46 is enclosed in a while and a try/except block. An attempt is thus made very 0.5 seconds to establish a connection with the LibreOffice socket using the resolver object's resolve() method. The initially defined SOCKET variable is also used again in line 40; it is expanded further by the "Universal Network Object" whose aim is to return the running LibreOffice instance. For the remote control, the script requires the context of the running LibreOffice application and requests it with StarOffice.ComponentContext.

If the connection attempt fails, then the script pauses for 0.5 seconds (sleep(0.5)), increases the counter n, and tries again. The script waits for a maximum of six seconds (n=12).

Mac Variant 2

On Mac OS X, you should send the script with a delay of five seconds before any connection attempts (i.e., before the while block). Under Mac OS – unlike with Linux – connection attempts sometimes disappear while LibreOffice is booted up, and the script does not continue. In such circumstances, it makes more sense to do without the while block and to always pause the script.

Once the resolver.resolve() call works, the script receives the context object of the running LibreOffice instance in line 39. A com.sun.star.frame.Desktop type object can then be generated in line 48. This object now finally makes it possible for the script to access the actual functions of LibreOffice.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • LibreOffice Macros with ScriptForge

    ScriptForge helps you automate LibreOffice by building portable macros.

  • Text to Speech

    Visually impaired users often find working with text and tables in office suites difficult. Pico TTS, a text-to-speech synthesizer, and the Read Text extension for LibreOffice and OpenOffice provide a solution.

  • LibreOffice 7 Now Available

    The LibreOffice 7 office suite is now available with important compatibility improvements.

  • The Clear Choice

    While LibreOffice and OpenOffice have a shared past, LibreOffice outstrips OpenOffice in contributors, code commits, and features.

  • LibreOffice 3.5

    PowerPoint shapes. We investigate how the two office modules work together.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More