gpt4 book ai didi

openoffice.org - 如何在 Libre/Open Office 中使用 pyUNO 库检查段落调整?

转载 作者:行者123 更新时间:2023-12-02 03:28:18 26 4
gpt4 key购买 nike

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

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com