从Perl调用Openoffice会抛出NoSuchElementexception

时间:2014-07-22 07:52:56

标签: perl converter openoffice.org doc uno

我尝试使用OpenOffice将odt-Files转换为doc-Files。已安装的版本为3.1.1,目前无法更改。 Perl版本是5.18。

Perl-module OpenOffice::UNO用于此转换。不幸的是,在较新版本的OpenOffice / LibreOffice中,不再支持Perl了。

脚本使用xvfb调用OpenOffice无头。

以下是使用的代码:

 `# Launch OpenOffice.org as a server
$ ooffice \
"-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager"

use OpenOffice::UNO;

# connect to the OpenOffice.org server
$uno = OpenOffice::UNO->new;
$cxt = $uno->createInitialComponentContext('file:///.../path/perluno');
$sm  = $cxt->getServiceManager;
$resolver = $sm->createInstanceWithContext
              ("com.sun.star.bridge.UnoUrlResolver", $cxt);
$rsm = $resolver->resolve
  ("uno:socket,host=localhost,port=8100;urp;StarOffice.ServiceManager");

# get an instance of the Desktop service
$rc = $rsm->getPropertyValue("DefaultContext");
$desktop = $rsm->createInstanceWithContext("com.sun.star.frame.Desktop", $rc);
.....`

在创建$ desktop的最后一行中,我收到以下错误消息:

terminate called after throwing an instance of 'com::sun::star::container::NoSuchElementException'

有没有办法解决这个问题?试图了解UNO接口的代码,尤其是UNO.xs,但是没有关于呼叫的信息" createInstanceWithContext"。

查看OpenOffice文档并未提供有关此内容的任何信息。

它还有助于获取完整的java错误消息,以确保缺少哪个元素。

文件" perluno"有内容:

[Bootstrap]
UNO_TYPES=/usr/lib64/openoffice.org//program/types.rdb
UNO_SERVICES=/usr/lib64/openoffice.org//program/services.rdb

0 个答案:

没有答案