1

我需要能够允许用户将他们的 .doc 文件(他们上传)导出为各种格式。我开始使用 OO SDK,并且还使用 XSLT 设置了一些自定义过滤器。一切正常,我可以将 word 文档导出为 pdf 等。

但是我想将其作为 Web 服务运行。我希望在专用节点上运行此转换服务,因此想要转换其文档的用户上传的所有文件都将到达此专用节点。我的网络应用程序本身是基于 PHP 的。使用 OO SDK 执行转换的最佳方法是什么?我还必须将生成的文件存储在数据库中。

我是否需要运行多个 OO 实例并将每个文件提供给要转换为特定实例的文件?而且,我是否需要编写一个自定义服务器来处理这个问题,因为我不知道 OO 是否是多线程的。非常感谢任何建议。

4

2 回答 2

4

使用 cli dll 尝试使用以下代码

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);
}

有关要导出的过滤器名称的完整列表,请查看我之前给出的另一个答案。

于 2009-07-28T17:18:20.470 回答
2

您是否考虑过使用JODConverter?它为您完成所有繁重的工作。

于 2009-06-23T06:43:23.970 回答