Openoffice3.1 pyuno混淆错误

Posted

技术标签:

【中文标题】Openoffice3.1 pyuno混淆错误【英文标题】:Openoffice3.1 pyuno confusing errors 【发布时间】:2009-10-24 19:24:17 【问题描述】:

我正在尝试获取sample 和我找到的其他示例代码,用于运行 openoffice 3.1.1 和 python 2.5 的 pyuno,但没有运气。

不幸的是,pyuno 没有提供任何关于哪里出了问题的线索。

在 [1] 中:导入 uno 在 [2] 中:local = uno.getComponentContext() [3]中:resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local) -------------------------------------------------- ------------------------- com.sun.star.uno.RuntimeException Traceback(最后一次调用) /opt/openoffice.org/basis3.1/program/ in () com.sun.star.uno.RuntimeException: : 'tuple' 对象没有属性 'getTypes',回溯如下 没有可用的回溯

下面是/opt/openoffice.org/basis3.1/program/officehelper.py的执行输出 这基本上会启动无头办公室实例并返回相关的上下文对象。

den@ev:/opt/openoffice.org/basis3.1/program > python officehelper.py 回溯(最近一次通话最后): 文件“officehelper.py”,第 42 行,在 从 com.sun.star.connection 导入 NoConnectException _uno_import 中的文件“uno.py”,第 273 行 RuntimeException = pyuno.getClass("com.sun.star.uno.RuntimeException") RuntimeError:pyuno.getClass:需要一个字符串参数

pyuno 只接受 1 个参数,它必须是一个字符串,如 http://udk.openoffice.org/source/browse/udk/pyuno/source/module/pyuno_module.cxx?rev=1.14&view=markup 中定义的那样 无论如何,我无法让 pyuno.getClass 工作。

关于如何让 pyuno 工作的任何建议?

【问题讨论】:

嗯。我不能让它以这种方式失败。这些说明适用于 Ubuntu 10.10。也许是特定于软件包的错误? 【参考方案1】:

在 [1] 中:导入 uno 在 [2] 中:local = uno.getComponentContext() [3]中:resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)

OOP 出错了,恕我直言。我知道它的 OT,但我之前试过让 uno 工作,然后放弃了。这是纯粹的 Steve Yegge 散文(阅读 http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html)。

当您将这些台词翻译成更易读的形式时,它们大致如下:

"令'local'为调用'uno'的方法'get component context'的结果。令'service manager'为'local'的属性'service manager'。令'resolver'为调用'服务管理器'方法'create instance with context',使用参数'com sun star bridge uno url resolver'和'local'。”

天哪。毫不奇怪,一个程序如此糟糕地过度具体、复杂和自我参照,同时又没有自我意识……你称之为“本地”的子方法,而这个子方法必须被告知“本地”是什么意思?说什么?向那些可以解决这个问题的无所畏惧的开发人员致敬。调试愉快。

添加:

感谢评论和积分。

pyuno 问题实际上我无能为力,但我鼓励在明确的最后期限内说服患者尝试尝试方法。

我还建议直接提交 B.U.G.与 pyuno 人(如果他们实际上是活跃的——我觉得这是一个相当安静的项目),因为无意义的错误消息:有问题的方法似乎请求一个字符串参数,它得到一个,它抱怨它做了。这对于声明代码错误变得合理的程度没有帮助。

在这种情况下,我经常查看来源。但你已经这样做了,对吧?

我讨厌人们在我寻求帮助时反问“你为什么要这样做?”。然而,有时有人(也许是你)在这个过程中确实提出了另一条可行的路径,这条路径不包括特定问题的解决方案,但有助于解决上级问题。那么,如果我可以问:大局是什么?

【讨论】:

+1 寻求帮助,+1 史蒂夫·耶格参考 -1 指出解决方案,谢谢 ;) 我多么喜欢你的 cmets 的冗长 :) 在大局中,我正在尝试绘制一个动态文档修改器/转换器。我将修改上传的 doc/docx 文档的内容并将它们转换为 pdf。我打算先使用 wvware,但它不提供 docx 兼容性。我看过其他一些项目,比如 docxtoany,不幸的是 xsl 让我失去了生命。我能想出的唯一方法是使用与 python 桥接的无头 openoffice 实例。但无法让它工作:'我想我会尝试一下 docxtoany 如果你的目标是ms office doc(x)文档,那么open office可能甚至不是理想的解决方案……我还没有彻底测试过,但恐怕很多细节doc(x)s 在开放式办公室中的呈现方式会有所不同。下一个重要细节是:您要修改多少文件?如果只是将您的版权声明放在每一页上,那么它可能成为组装 pdf 的问题。 只是一个小修改。正如您所指出的,文档的每一页都有版权声明和小徽标。然后将其保存为pdf。不幸的是,源文档只能是 doc(x) 格式。

以上是关于Openoffice3.1 pyuno混淆错误的主要内容,如果未能解决你的问题,请参考以下文章

在 django 中运行 PyUNO

优化 PyUno 中的公式复制

如何使用 PyUNO 和 OpenOffice 设置文本背景颜色

编写器的 PyUno 文件类型转换

如何使用 PyUNO 和 OpenOffice 编写器获取文本坐标

让 python 导入 uno / pyuno