2015-09-30 1 views
0

Ce code devrait ouvrir un modèle et l'enregistrer en utilisant storeAsUrl. Il ouvre mon modèle mais échoue à l'enregistrer. Je ne sais pas pourquoi.Python storeAsUrl ne parvient pas à enregistrer le document

import pyuno 

from os.path import realpath, join 
from com.sun.star.beans import PropertyValue 


SAVE_PATH = '/home/user/Bureau/' 
FILENAME = 'P{0:04d}.doc' 
TEMPLATE_PATH = '/home/user/Bureau/' 
TEMPLATE_NAME = 'bal.ott' 


def convert_path_to_url(path): 
    return pyuno.systemPathToFileUrl(realpath(path)) 


def python_bal(*args): 
    bal_doc = BALDocument(1) 
    bal_doc.save() 


class BALDocument(): 

    def __init__(self, id): 
     self.id = id 
     self.desktop = XSCRIPTCONTEXT.getDesktop() 
     template_url = convert_path_to_url(join(TEMPLATE_PATH, TEMPLATE_NAME)) 
     args = (PropertyValue('Hidden', 0, False, 0),) 
     self.model = self.desktop.loadComponentFromURL(template_url, "_default", 0, args) 
     self.filename = FILENAME.format(id) 
     self.save_path = join(SAVE_PATH, self.filename) 

    def save(self): 
     url = convert_path_to_url(self.save_path) 
     args = (PropertyValue('FilterName', 0, 'MS Word 97', 0),) 
     self.model.storeAsUrl(url, args) 
     self.model.dispose() 

g_exportedScripts = python_bal, 

C'est un script très simple j'ai placé dans ~/.config/libreoffice/4/user/Scripts/python/. Je le lance à partir d'un bouton dans la barre d'outils d'un document vide. Je ne peux pas passer à travers cette erreur:

com.sun.star.uno.RuntimeExceptionError during invoking function python_bal in module file:///home/bastien/.config/libreoffice/4/user/Scripts/python/bbal.py (: storeAsUrl...)

Je me demande si elle ne vient pas de la façon dont je crée self.desktop.

Répondre

1

Il y a une faute de frappe dans le nom de la méthode: storeAsURL avec URL a résolu l'astuce.

Développer avec un composant uno et python est plein d'écueils car il n'y a pas de simple IDE pour vous aider à compléter ou à inspecter le code en cours de développement. Oui, il y a XrayTools ...

+0

En plus de XrayTools, les blocs 'import logging' et' try/except' sont utiles pour le débogage. –