我正在尝试为OpenOffice编写扩展程序。
这个扩展名将用java编写(已编译,我不希望别人看到代码)。 当我启动openOffice编写器,单击按钮和打印时,它应该执行操作。 我已经添加了按钮,但我无法找到如何将其与应该执行的操作的代码相关联。 我已经阅读了wiki和DevGuide,但我发现它并不清楚。
请您帮我开始了解如何创建扩展程序(我应该在哪里放置代码,如何将其与GUI链接等等)?
答案 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
然而,基本例程说它找不到方法。也许我没有正确宣布方法或其他东西。