如何启动OpenOffice扩展?

时间:2016-06-29 08:19:31

标签: java openoffice.org openoffice-writer

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

这个扩展名将用java编写(已编译,我不希望别人看到代码)。 当我启动openOffice编写器,单击按钮和打印时,它应该执行操作。 我已经添加了按钮,但我无法找到如何将其与应该执行的操作的代码相关联。 我已经阅读了wiki和DevGuide,但我发现它并不清楚。

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

1 个答案:

答案 0 :(得分:0)

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

点击显示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(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

然而,基本例程说它找不到方法。也许我没有正确宣布方法或其他东西。