首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Libre/ Office中使用pyUNO库检查段落调整?

如何在Libre/ Office中使用pyUNO库检查段落调整?
EN

Stack Overflow用户
提问于 2015-03-13 13:55:48
回答 1查看 443关注 0票数 3

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

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

代码语言:javascript
复制
cursor.ParaAdjust = com.sun.star.style.ParagraphAdjust.RIGHT
cursor.setPropertyValue('ParaAdjust', com.sun.star.style.ParagraphAdjust.RIGHT)

要检查值,第一次尝试是:

代码语言:javascript
复制
if cursor.ParaAdjust == com.sun.star.style.ParagraphAdjust.RIGHT:
    ...

但没起作用。

视察:

代码语言:javascript
复制
type(cursor.ParaAdjust)
----> <class 'int'>
type(com.sun.star.style.ParagraphAdjust.RIGHT)
----> <class 'uno.Enum'>

是的,我假设这些是常量(见下面的注释),是我的错。

现在,uno.Enum类有两个属性typeNamevalue,所以我尝试了:

代码语言:javascript
复制
if cursor.ParaAdjust == com.sun.star.style.ParagraphAdjust.RIGHT.value:
    ...

但也没起作用!

视察:

代码语言:javascript
复制
type(com.sun.star.style.ParagraphAdjust.RIGHT.value)
----> <class 'string'>
print(com.sun.star.style.ParagraphAdjust.RIGHT.value)
----> 'RIGHT'

设置ParaAdjust属性,然后打印其实际值,我得到:

代码语言:javascript
复制
LEFT    = 0
RIGHT   = 1
BLOCK   = 2
CENTER  = 3
STRETCH = 0
(note that STRETCH is considered as LEFT,
 a bug or something not implemented?)

所以:

  • 这些值是在哪里定义的?
  • 如何使用UNO获得这些值?
  • 我是不是在官方文件里漏掉了什么?

Note

在LibreOffice 4.0中(可能在旧版本中也是如此),您可以使用以下方法获得这个值:

代码语言:javascript
复制
uno.getConstantByName('com.sun.star.style.ParagraphAdjust.RIGHT')

不再起作用的4.1版(正确地说,不是常量)。

EN

回答 1

Stack Overflow用户

发布于 2015-03-15 10:54:39

感谢来自论坛(链接)的“OpenOffice hanya”,这里有一些用于映射ParagraphAdjust值的python代码

代码语言:javascript
复制
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())}

在python2.6中,不支持字典的理解语法,可以使用dict()函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29034087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档