コード例 #1
0
ファイル: printer.py プロジェクト: ClearMind/Amort
def generate(document, values, save_to):
    for k in values.keys():
        replace(document, k, values[k])

    file_name = 'file://' + save_to
    if file_name[-4:] != '.odt':
        file_name += '.odt'
    try:
        document.storeAsURL(file_name, ())
    except ErrorCodeIOException, e:
        error(__name__, "File writing error: %s" % e.Message)
コード例 #2
0
ファイル: printer.py プロジェクト: ClearMind/Amort
def get_document(file_name):
    path = os.path.join(MEDIA_ROOT, "template_docs/" + file_name)
    debug(__name__, path)
    
    local = uno.getComponentContext()
    resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)

    document = None
    try:
        context = resolver.resolve( "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" )
        desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
        document = desktop.loadComponentFromURL("file://" + path, "_blank", 0, ())
    except UnoException, e:
        error(__name__,"OpenOffice connection error: %s" % e.Message)
        return None
コード例 #3
0
ファイル: printer.py プロジェクト: ClearMind/Amort
def act(task, rewrite=False):
    if task.doc_url and not rewrite:
        return task.doc_url

    requests = task.request_set.all()
    document = get_document("act.odt")
    if document:
        search = document.createSearchDescriptor()
        search.SearchString = '$table'
        found = document.findFirst(search)
        if found:
            table = document.createInstance( "com.sun.star.text.TextTable" )
            table.initialize(1,4)
            text = document.Text
            text.insertTextContent(found.Start, table, 0)
            # head
            table.getCellByPosition(0, 0).Text.setString(u'Наименование')
            table.getCellByPosition(1, 0).Text.setString(u'Инв. номер')
            table.getCellByPosition(2, 0).Text.setString(u'Год приобретения')
            table.getCellByPosition(3, 0).Text.setString(u'Состояние')

            #data
            for r in requests:
                index = table.Rows.Count
                table.Rows.insertByIndex(index, 1)
                table.getCellByPosition(0, index).Text.setString(r.device)
                table.getCellByPosition(1, index).Text.setString(r.number)
                table.getCellByPosition(2, index).Text.setString(r.year)

            path = os.path.join(MEDIA_ROOT, "docs/") + str(task.pk) + '.odt'
            try:
                document.storeAsURL('file://' + path, ())
            except ErrorCodeIOException, e:
                error(__name__, "File writing error: %s" % e.Message)

            url = os.path.join(MEDIA_URL, "docs/" + str(task.pk) + ".odt")

            task.doc_url = url
            task.save()
            document.dispose()

            return url