2016-06-29 2 views
-4

Я пытаюсь написать расширение для OpenOffice.Как начать расширение OpenOffice?

Это расширение будет записано в java (скомпилировано, я не хочу, чтобы люди видели код). Он должен делать действия, когда я запускаю openOffice writer, когда я нажимаю кнопку и когда печатаю. Я уже добавил кнопку, но не могу найти, как связать ее с кодом того, что она должна делать. Я читал wiki и DevGuide, но я не считаю это очень ясным.

Не могли бы вы помочь мне понять, как создать расширение (где я должен поместить свой код, как связать его с графическим интерфейсом и т. Д.)?

+0

Если вы не хотите, чтобы люди видели код, не используйте java, поскольку его очень легко декомпилировать. – xenteros

+0

https://wiki.openoffice.org/wiki/JavaEclipseTuto – xenteros

+0

Какой язык я должен использовать и как его использовать для создания расширения для OpenOffice? – Benjamin

ответ

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).

После того, как код генерируется в соответствии с инструкциями, а затем добавить этот код в dispatch метод TestAddOn.java:

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 

Однако Базовая процедура говорит, что не может найти метод. Возможно, я не декларировал метод правильно или что-то в этом роде.