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

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • LibreOffice 3.5

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

  • LibreOffice 4.0

    LibreOffice celebrates its birthday with the release of the first version with a 4 in front of the dot. All modules offer substantial improvements and the kinds of changes that warrant a major version. We look at some features worth celebrating.

  • LibreOffice Based CODE 3.0 Released

    You can now run the latest version of LibreOffice Online in your own cloud.

  • Libre/OpenOffice Scripts

    Your favorite office suites have a surprisingly active life at the command line, and various supplementary scripts can help you perform some functions more easily there than on the desktop.

  • Document Formats

    Can documents from the past 20 years still be opened easily today? The Linux Magazine team rummaged through some old hard disk drives and asked readers for legacy files. The documents we found caused a couple of surprises.

comments powered by Disqus

Direct Download

Read full article as PDF:

Price $2.95

News