【问题标题】:How to start an OpenOffice extension? [closed]如何启动 OpenOffice 扩展? [关闭]
【发布时间】:2016-06-29 08:19:30
【问题描述】:

我正在尝试为 OpenOffice 编写扩展。

这个扩展是用java写的(编译,我不想让人看到代码)。 它应该在我启动 openOffice writer、单击按钮和打印时执行操作。 我已经添加了按钮,但我找不到如何将它与它应该做什么的代码链接起来。 我已经阅读了 wiki 和 DevGuide,但我觉得不是很清楚。

能否请您帮助我开始了解如何创建扩展(我应该将代码放在哪里,如何将其与 GUI 链接等...)?

【问题讨论】:

  • 如果你不想让别人看到代码,就不要使用java,因为它很容易反编译。
  • 我应该使用哪种语言,以及如何使用它来为 OpenOffice 做扩展?
  • 您必须使用 Java,因为 OpenOffice 使用 java。开源才是王道!
  • 如果您不希望人们理解您的代码,请对其进行混淆处理。

标签: java openoffice.org openoffice-writer


【解决方案1】:

例如,按照https://wiki.openoffice.org/wiki/OpenOffice_NetBeans_Integration#Configuration 的说明进行操作。转到Tools -> Plugins,安装Apache OpenOffice API Plugin。

单击显示OpenOffice.org Add-On Project Type 的链接以获取更多说明。如果您还没有,请下载 AOO 4.1.2 和 AOO 4.1.2 SDK。 (该插件不适用于我使用 LibreOffice,但生成的扩展在 LibreOffice 中确实有效)。

按照说明生成代码后,再将这段代码添加到TestAddOn.java的dispatch方法中:

if ( aURL.Path.compareTo("HelloWorld") == 0 )
{
    // add your own code here
    com.sun.star.frame.XController xController = m_xFrame.getController();
    if (xController != null) {
        XModel xModel = (com.sun.star.frame.XModel) xController.getModel();
        XTextDocument xTextDocument = (com.sun.star.text.XTextDocument)
            UnoRuntime.queryInterface(XTextDocument.class, xModel);
        XText xText = xTextDocument.getText();
        XTextRange xTextRange = xText.getEnd();
        xTextRange.setString( "Hello World (in Java)" );
        return;
    }
}

现在编译和部署扩展。单击“Hello World”工具栏按钮时,应将“Hello World (in Java)”放入文档中。

代码改编自https://forum.openoffice.org/en/forum/viewtopic.php?f=47&t=72459。

为了处理文档打开等事件,我还尝试从基本代码中调用扩展的方法,如下所示:

Sub CallJavaMacro
   MSPF = createUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
   scriptPro = MSPF.createScriptProvider("")
   xScript = scriptPro.getScript("vnd.sun.star.script:" & _
        "com.example.testaddon.TestAddOn.PutHello?" & _
        "language=Java&location=user:uno_packages/TestAddOn.oxt")
   Thing = xScript.Invoke()
End Sub

但是基本例程说它找不到方法。也许我没有正确声明方法或其他什么。

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2013-04-02
    • 1970-01-01
    相关资源
    最近更新 更多