Найти - Пользователи
Полная версия: Python как язык макросов для OOo
Начало » Python для экспертов » Python как язык макросов для OOo
1
Все ники заняты
Вопрос о способах изучения сабжа.

В OOo Developer's Guide (есть такой PDF) по Python есть информация в основном только о том, что Python в OOo есть :). Английский, к сожалению, знаю из рук вон плохо, поэтому часто бывает очень трудно найти в инете нужную инфу.

Например, методом тыка написал макрос для Writer'а, который получает выделенный в настоящий момент текст и вставляет его в конец документа:
def GetSelection(arg):
    """Получает выделенный текст..."""
    model = XSCRIPTCONTEXT.getDocument()
    selection = model.getCurrentController().getSelection().getByIndex(0).getString()
    model.Text.End.String = selection
    return None
Вопрос: как быстро найти (например, на http://api.openoffice.org/) описание свойств и методов нужного объекта?

Например. Хочу понять, что же я получил у себя в переменной “selection”. Ищу XSCRIPTCONTEXT, получаю:
http://api.openoffice.org/docs/common/ref/com/sun/star/script/provider/XScriptContext.html
Очень хорошо. Перехожу по ссылке getDocument(), получаю объект XModel:
http://api.openoffice.org/docs/common/ref/com/sun/star/frame/XModel.html
Очень хорошо. Перехожу по ссылке getCurrentController(), получаю объект XController:
http://api.openoffice.org/docs/common/ref/com/sun/star/frame/XController.html
Очень хорошо. Однако метода getSelection() не наблюдаю вообще, т.е. приехали. Т.е. смотрю я не туда и ищу не то.

Чего я не понимаю, что делаю не правильно?
Какую информацию об объектах в данном случае можно получить в коде, программно?
RDX
Соболезную ибо сам в похожем положении..
от деволоперсгайд'а я вообще в шоке.
посмотри эти ссылки может поможет что..

http://kosh.datateamsys.com/~danny/OOo/
http://www.script-coding.info/Python/OOo_Macro.html

я многие вещи нашел тупым перебором…
umup
где можно найти простой пример : запустить Writer, открыть doc/rtf файл и записать в формате pdf. GUI открывать не обязательно. и чтобы работало в win/linux. или отдельно ООО конвертер в pdf. пробовал другие, но этот вроде лучше конвертирует. нужно пакетное конвертирование.
Все ники заняты
RDX
Ясно :). Кстати, как исследовать уже полученные объекты в готовых примерах, я вроде бы понял. Если такой объект превратить в строку функцией str(), то все интерфейсы, которые он поддерживает, вроде видны. А зная названия этих интерфейсов, можно довольно быстро найти их на http://api.openoffice.org/.
Другой вопрос - как быстро найти способ реализации какой-то своей конкретной задачи ;).

umup
Видимо, нужно запускать ООо в режиме “слушания” из командной строки, а затем подключаться к нему, как описано по ссылке http://www.script-coding.info/Python/OOo_Macro.html. Так что без окрывания GUI наверное не получится. Как дать команду “Save As” из Питона, к сожалению, без понятия…
slivlen
umup
где можно найти простой пример : запустить Writer, открыть doc/rtf файл и записать в формате pdf. GUI открывать не обязательно. и чтобы работало в win/linux. или отдельно ООО конвертер в pdf. пробовал другие, но этот вроде лучше конвертирует. нужно пакетное конвертирование.
Я пару месяцев назад писал скрипт, который сохраняет текст из writer в html и отправляет его в качестве тела письма через thunderbird. Посмотри, может найдешь что полезное :) В pdf, думаю, сохраняется аналогичным образом.
from com.sun.star.beans import PropertyValue
from com.sun.star.io import XOutputStream
from unohelper import Base
tmp_html = '/tmp/ooomsg.html'
class OutputStream( Base, XOutputStream ):
    def __init__( self ):
        self.closed = 0
    def closeOutput(self):
        self.closed = 1
    def writeBytes( self, seq ):
        sys.stdout.write( seq.value )
    def flush( self ):
        pass
def toHtml():
    filterName = "HTML (StarWriter)"
    outProps = (
        PropertyValue( "FilterName" , 0, filterName , 0 ),
        PropertyValue( "Overwrite" , 0, True , 0 ),
        PropertyValue( "OutputStream", 0, OutputStream(), 0)
    )
    doc = XSCRIPTCONTEXT.getDocument()
    doc.storeToURL(u'file://' + tmp_html, outProps)
    os.system("thunderbird -compose body='%s'" % open(tmp_html, 'r').read())
    return None
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB