Преобразование документов с использованием OpenOffice SDK - PullRequest
1 голос
/ 23 июня 2009

У меня должна быть возможность разрешать пользователям экспортировать свои файлы .doc (которые они загружают) в различные форматы. Я начал использовать OO SDK, и я также настроил некоторые пользовательские фильтры, используя XSLT. Все работает хорошо, и я могу экспортировать документы Word в PDF и т. Д.

Однако я хочу запустить это как веб-сервис. Я хочу запустить эту службу преобразования на выделенном узле, чтобы все загрузки файлов пользователями, желающими преобразовать свои документы, достигли этого выделенного узла. Само мое веб-приложение основано на PHP. Каков наилучший способ выполнить преобразование с помощью OO SDK? Мне также нужно будет хранить полученный файл в БД.

Нужно ли запускать несколько экземпляров OO и передавать каждый файл для преобразования в конкретный экземпляр? И мне нужно написать собственный сервер для обработки этого, так как я не знаю, является ли OO многопоточным. Любой совет с благодарностью.

Ответы [ 2 ]

4 голосов
/ 28 июля 2009

Используя клики, попробуйте следующий код

public conversion()
{
        unoidl.com.sun.star.uno.XComponentContext localContext =uno.util.Bootstrap.bootstrap();

        unoidl.com.sun.star.lang.XMultiServiceFactory multiServiceFactory =(unoidl.com.sun.star.lang.XMultiServiceFactory)localContext.getServiceManager();

        XComponentLoader componentLoader =(XComponentLoader)multiServiceFactory.createInstance("com.sun.star.frame.Desktop");

        XComponent xComponent = componentLoader.loadComponentFromURL(PathConverter(FileName1),"_blank", 0,new PropertyValue[] {MakePropertyValue("Hidden", true)});

        unoidl.com.sun.star.beans.PropertyValue [] propertyValues;
        propertyValues = new unoidl.com.sun.star.beans.PropertyValue[2];
        // Setting the flag for overwriting
        propertyValues[0] = new unoidl.com.sun.star.beans.PropertyValue();
        propertyValues[0].Name = "Overwrite";
        propertyValues[0].Value = new Any(true);
        // Setting the filter name
        propertyValues[1] = MakePropertyValue("FilterName", "HTML (StarWriter)");
        /*propertyValues[1] = new unoidl.com.sun.star.beans.PropertyValue();
        propertyValues[1].Name = "FilterName";
        propertyValues[1].Value = new uno.Any("HTML (StarWriter)"); // writer_pdf_Export  ,  swriter: MS Word 97 , HTML (StarWriter) ,*/

        XStorable xStorable = xComponent as XStorable;xStorable.storeToURL(PathConverter(FileName),propertyValues);
}

Полный список имен файлов для экспорта можно найти в другом ответе, который я дал раньше.

2 голосов
/ 23 июня 2009

Рассматривали ли вы использование JODConverter ? Он делает всю тяжелую работу за вас.

...