Open Office propose une solution permettant d’exécuter toutes les fonctions proposées par le logiciel de manière programmatique. Il s’agit de PyUNO.
Cet article est le premier d’une série qui visera à présenter la librairie Python permettant de manipuler ce serveur Open Office.
Dans ce premier article, nous allons voir comment, dans un script Python, se connecter au serveur et le lancer si cela n’est pas déjà fait.
def start_client():
print('Starting the client ...')
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext)
return resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
Cette méthode start_client se connecte au serveur Open Office lancé sur le port 2002. Si cela est impossible, une exception sera soulevée.
Du coup si l’on a une exception de soulevée, on peut considérer que le serveur n’est pas démarré et le lancer.
try:
ctx = start_client()
except Exception, exc:
print('... Server not Started. Starting it ...')
status = os.system('"' + os.path.normpath(oo_path) + '" "-accept=socket,host=localhost,port=2002;urp;StarOffice.ServiceManager" -nologo -headless -nofirststartwizard" &')
time.sleep(2)
ctx = start_client()
Nous démarrons le client. Si une exception est soulevée alors, nous démarrons le serveur, lui laissons deux secondes pour se lancer et redémarrons le client.
Pour que le serveur puisse démarrer, il vous faut renseigner la variable oo_path avec le chemin vers l’exécutable soffice
Sous debian avec Open Office installé via apt-get, je place :
oo_path = '/usr/bin/soffice'
Et sous Windows :
oo_path = 'C:/Program Files/OpenOffice.org 3/program/soffice.exe'
Suite à cela, vous pouvez récupérer l’instance de Open Office ouverte et la manipuler (créer un nouveau document, l’enregistrer, le modifier, lui changer son format, …)
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
Si vous désirez voir le code indiqué dans cet article dans on ensemble, c’est par ici.
Et pour un exemple d’utilisation du client que nous venons de démarrer, vous pouvez lire l’article ouvrir un document HTML et l’enregistrer en DOC
