Python storeAsUrl не может сохранить документ

Этот код должен открыть шаблон и сохранить его с помощью storeAsUrl. Он открывает мой шаблон, но не может сохранить его. Понятия не имею почему.

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,

Это очень простой скрипт, который я поместил в ~/.config/libreoffice/4/user/Scripts/python/, Я запускаю его с помощью кнопки на панели инструментов пустого документа. Я не могу пройти через эту ошибку:

com.sun.star.uno.RuntimeExceptionError при вызове функции python_bal в файле модуля:///home/bastien/.config/libreoffice/4/user/Scripts/python/bbal.py (: storeAsUrl...)

Интересно, это не так, как я создаю self.desktop,

1 ответ

Решение

В названии метода есть опечатка: storeAsURL с URL решил трюк.

Разработка с использованием uno component и python полна ловушек, потому что не существует простой IDE, которая помогла бы вам при автозаполнении или проверке кода во время разработки. Да, есть XrayTools...

Другие вопросы по тегам