首页 文章

如何在API / SDK中选择OpenOffice和LibreOffice

提问于
浏览
1

我正在将我们的一个内部应用程序转换为使用 OpenOffice/LibreOffice 以及 MS Office .

我最初担心很难同时支持 OpenOfficeLibreOffice ,但我安装了 LibreOffice SDK,令我惊讶的是它启动了 Apache OpenOffice 安装(我已经安装了) .
到目前为止,它一直运作良好,所以我对兼容性的担忧已经消失 .

我的问题是你如何告诉bootstrap方法启动哪个版本?
如果两者都安装了,有没有办法指定 LibreOffice 而不是 OpenOffice
我正在使用 C#/.NETVisual Studio 中进行开发,但我已经非常擅长翻译其他语言的示例,因为Web上的OO / LO API示例非常吝啬 .

1 回答

  • 0

    既然您提到其他语言的解决方案可能已被翻译/可行:

    这是一个Java解决方案 .

    Background

    使用Java时,使用OOo / LO(分别是OpenOffice.org和LibreOffice),您需要使用juh.jar Build 连接,并且此jar必须位于OOo / LibreOffice的安装文件夹中和类路径上 .

    如果您正在使用maven或在Web容器上安装,这非常困难......为了解决这个问题,这个页面:https://forum.openoffice.org/en/forum/viewtopic.php?f=44&t=2520&sid=42b65314c6f727fe42315c9910e443b7下载了作为第一篇文章(2008年2月10日)的一部分,今天我使用了相同的jar (2014年1月30日)并且可以验证它在Ubuntu 13.10上与LibreOffice 4.1.4一起使用 . 所以这应该给你进一步的兼容性保证!

    Solution

    在该页面上可以看到提供的解决方案将更改连接字符串:

    //following assumes juh.jar is in the OOo/LO installation folder and is also on the classpath
    com.sun.star.uno.XComponentContext xContext = com.sun.star.comp.helper.Bootstrap.defaultBootstrap_InitialComponentContext();
    

    以下允许您将juh.jar作为项目资源,但也需要bootstrapconnection.jar作为项目的一部分,因为安装文件夹不是相对于juh.jar文件必须显式声明,如下所示:

    //fully qualified names used to avoid any ambiguity
    String oooExeFolder = "/opt/libreoffice4.1/program/";
    com.sun.star.uno.XComponentContext xContext = ooo.connector.BootstrapSocketConnector.bootstrap(oooExeFolder);
    

    源代码也可以在下载的jar中找到 .

    OOo / LO都开始使用“soffice” .

    查看代码(bootstrapconnector.jar)后,它看起来不会太长,并且应该很容易转换 .

    My question is how do you tell the bootstrap method which version to launch?

    • 将bootstrapconnector.jar中包含的代码转换为C#,你应该好好去

    • 确定"soffice"的路径

    • 找出哪一个适合传入

相关问题