LibreOffice проблемы рисования хэш-меток в форме с помощью Python

Я пытаюсь создать шаблон хэш-метки внутри фигуры с помощью LibreOffice 5 В Windows 10 с помощью Python 3.3, который поставляется с LibreOffice. Две трети кода аналогичны этой записи с дополнительными вопросами о создании хэш-меток в конце списка кода.

Это код Python, который я пробовал.

import sys
print(sys.version)

import socket
import uno

# get the uno component context from the PyUNO runtime
localContext = uno.getComponentContext()

# create the UnoUrlResolver
resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext )

# connect to the running office
ctx = resolver.resolve( "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager

# get the central desktop object
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
model = desktop.getCurrentComponent()

# Create the shape
def create_shape(document, x, y, width, height, shapeType):
    shape = model.createInstance(shapeType)
    aPoint = uno.createUnoStruct("com.sun.star.awt.Point")
    aPoint.X, aPoint.Y = x, y
    aSize = uno.createUnoStruct("com.sun.star.awt.Size")
    aSize.Width, aSize.Height = width, height
    shape.setPosition(aPoint)
    shape.setSize(aSize)
    return shape

def formatShape(shape):
    shape.setPropertyValue("FillColor", int("FFFFFF", 16))  # blue
    shape.setPropertyValue("LineColor", int("000000", 16))  # black

    aHatch = uno.createUnoStruct("com.sun.star.drawing.Hatch")
    #HatchStyle = uno.createUnoStruct("com.sun.star.drawing.HatchStyle")
    #aHatch.Style=HatchStyle.DOUBLE;
    aHatch.Color=0x00ff00
    aHatch.Distance=100
    aHatch.Angle=450

    shape.setPropertyValue("FillHatch", aHatch)
    shape.setPropertyValue("FillStyle", "FillStyle.DOUBLE")

shape = create_shape(model, 0, 0, 10000, 10000, "com.sun.star.drawing.RectangleShape")
formatShape(shape)

drawPage.add(shape)

Этот код должен установить двойной шаблон перекрестия внутри прямоугольника, но никакой шаблон не показывает ups внутри прямоугольника.

aHatch = uno.createUnoStruct("com.sun.star.drawing.Hatch")
#HatchStyle = uno.createUnoStruct("com.sun.star.drawing.HatchStyle")
#aHatch.Style=HatchStyle.DOUBLE;
aHatch.Color=0x00ff00
aHatch.Distance=100
aHatch.Angle=450

shape.setPropertyValue("FillHatch", aHatch)
shape.setPropertyValue("FillStyle", "FillStyle.DOUBLE")

Линия для установки шаблона стиля штриховки:

uno.RuntimeException: pyuno.getClass: 

Сбой со следующей ошибкой

com.sun.star.drawing.HatchStyleis a ENUM, expected EXCEPTION,

Вот некоторые ссылки на Java и основные примеры, которые я использовал для справки.

1 ответ

  1. HatchStyle = uno.createUnoStruct («com.солнце.звезда.рисунок.HatchStyle»)

    Это не удается, потому что HatchStyle является перечислением, а не структурой . Чтобы использовать перечисление HatchStyle, следуйте одному из трех способов в примере python из ссылки перечисление.

    форма.setPropertyValue («FillStyle», » FillStyle.ДВОЙНОЙ»)

    Похоже, вы путаете «FillStyle».HATCH » и » HatchStyle.DOUBLE » из примера. Это то, что код должен быть в Python:

    from com.sun.star.drawing.FillStyle import HATCH
    shape.setPropertyValue("FillStyle", HATCH)
    

    Это, кажется, также отсутствует:

    drawPage = model.getDrawPages().getByIndex(0)