Слияние почты LibreOffice с Java

Я пытаюсь автоматически использовать функцию слияния офисной почты libre из приложения Java.

Я попытался установить libreoffice sdk, но безуспешно, потому что для этого требуется программное обеспечение, которое больше недоступно (например, zip-tools). В любом случае мне удалось получить файлы jar (jurtl-3.2.1.jar, ridl-3.2.1.jar, unoil-3.2.1.jar и juh-3.2.1.jar) из репозитория maven.

С помощью этих файлов jar я смог воспроизвести множество примеров, представленных здесь http://api.libreoffice.org/examples/examples.html#Java_examples

Также в документации по API LibreOffice указана служба MailMerge (см. Здесь http://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1text_1_1MailMerge.html)

Но ни в одной банке этот класс обслуживания недоступен, единственный доступный для меня экземпляр - MailMergeType.

Я могу открыть файл шаблона * .odt в моем javacode, и следующим шагом будет создание экземпляра службы слияния почты и передача файла источника данных * .csv службе слияния почты.

В документации API перечислены некоторые функции, которые могут мне помочь, но, как я уже сказал, я не могу получить доступ к этому классу обслуживания, потому что его просто нет в предоставленных файлах jar.

Кто-нибудь знает, как я могу получить доступ к службе слияния почты для libreoffice?

Если вам нужна дополнительная информация о моем окружении, просто спросите.

Искренне


person Arthur Welsch    schedule 02.11.2015    source источник


Ответы (1)


Глядя на этот код 2004 года, очевидно, вы можете просто использовать класс Java Object. Вот несколько фрагментов этого кода:

Object mmservice = null;
try {
    // Create an instance of the MailMerge service
    mmservice = mxMCF.createInstanceWithContext(
        "com.sun.star.text.MailMerge", mxComponentContext);
}
// Get the XPropertySet interface of the mmservice object
XPropertySet oObjProps = (XPropertySet)
    UnoRuntime.queryInterface(XPropertySet.class, mmservice);
try {
    // Set up the properties for the MailMerge command
    oObjProps.setPropertyValue("DataSourceName", mDataSourceName);
}
// Get XJob interface from MailMerge service and call execute on it
XJob job = (XJob) UnoRuntime.queryInterface(XJob.class, mmservice);
try {
    job.execute(new NamedValue[0]);
}

См. Также Как выполнить простое слияние почты в OpenOffice.

Что касается источника старых инструментов zip, попробуйте zip.exe из http://www.willus.com/archive/zip64/.

person Jim K    schedule 03.11.2015
comment
Привет, Джим, ты совершенно прав, я ошибся в своих размышлениях о том, как это должно работать. Также я установил эти свойства перед выполнением задания DocumentURL DataSourceName CommandType Command OutputType OutputURL и FileNamePrefix. Спасибо - person Arthur Welsch; 04.11.2015