如何启动 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例程说找不到方法。可能是我没有正确声明方法之类的。
我正在尝试为 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例程说找不到方法。可能是我没有正确声明方法之类的。