com.sun.star.style.ParagraphProperties服务支持该属性ParaAdjust,支持com.sun.star.style.ParagraphAdjust中的5个值
(ParagraphPropertiesParagraphAdjust)。

要设置该值,可以使用以下两种方法之一:

cursor.ParaAdjust = com.sun.star.style.ParagraphAdjust.RIGHT
cursor.setPropertyValue('ParaAdjust', com.sun.star.style.ParagraphAdjust.RIGHT)

要检查值,第一次尝试是:
if cursor.ParaAdjust == com.sun.star.style.ParagraphAdjust.RIGHT:
    ...

但是没有用

检查:
type(cursor.ParaAdjust)
----> <class 'int'>
type(com.sun.star.style.ParagraphAdjust.RIGHT)
----> <class 'uno.Enum'>

是的,我以为这些都是常量(请参阅下面的注释),这是我的错。

现在,uno.Enum类具有两个属性typeNamevalue,因此我尝试了:
if cursor.ParaAdjust == com.sun.star.style.ParagraphAdjust.RIGHT.value:
    ...

但是也没有用!

检查:
type(com.sun.star.style.ParagraphAdjust.RIGHT.value)
----> <class 'string'>
print(com.sun.star.style.ParagraphAdjust.RIGHT.value)
----> 'RIGHT'

设置ParaAdjust属性,然后打印其实际值,我得到:
LEFT    = 0
RIGHT   = 1
BLOCK   = 2
CENTER  = 3
STRETCH = 0
(note that STRETCH is considered as LEFT,
 a bug or something not implemented?)

所以:
  • 这些值在哪里定义?
  • 如何使用UNO API获得这些值?
  • 我在官方文档中缺少什么吗?


  • 注意:

    在LibreOffice 4.0中(可能也在旧版本中),您可以通过以下方式获得此值:
    uno.getConstantByName('com.sun.star.style.ParagraphAdjust.RIGHT')
    

    从版本4.1不再可用(正确地说,不是常量)。

    最佳答案

    感谢OpenOffice论坛(link)的“ hanya ”,这是一些用于映射ParagraphAdjust值的python代码:

    def get_paragraph_adjust_values():
        ctx = uno.getComponentContext()
        tdm = ctx.getByName(
                "/singletons/com.sun.star.reflection.theTypeDescriptionManager")
        v = tdm.getByHierarchicalName("com.sun.star.style.ParagraphAdjust")
        return {name : value
                for name, value
                in zip(v.getEnumNames(), v.getEnumValues())}
    

    在python 2.6中,它不支持字典的理解语法,可以改用 dict()函数。

    关于openoffice.org - 如何在Libre/Open Office中使用pyUNO库检查段落调整?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29034087/

    10-17 02:14