如何启动 OpenOffice 扩展?

How to start an OpenOffice extension?

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

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

你能帮我开始理解如何创建扩展吗(我应该把我的代码放在哪里,如何 link 使用 GUI 等等...)?

例如,请按照 https://wiki.openoffice.org/wiki/OpenOffice_NetBeans_Integration#Configuration 中的说明进行操作。前往 Tools -> Plugins.

安装 Apache OpenOffice API Plugin

单击显示 OpenOffice.org Add-On Project Type 的 link 以获得更多说明。如果您还没有,请下载 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

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

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

但是Basic例程说找不到方法。可能是我没有正确声明方法之类的。