我需要能够允许用户将他们的.doc文件(他们上传的文件)导出为各种格式。我开始使用OO SDK,并且我也使用XSLT设置了一些自定义过滤器。一切都很好,我能够将word文档导出为pdf等。
但是我想将其作为Web服务运行。我希望在专用节点上运行此转换服务,因此希望转换其文档的用户的所有文件上载都将到达此专用节点。我的网络应用程序本身是基于PHP的。使用OO SDK执行转换的最佳方法是什么?我还必须将结果文件存储在DB中。
我是否需要运行多个OO实例并将每个文件都转换为特定的实例?而且,我是否需要编写一个自定义服务器来处理这个问题,因为我不知道OO是否是多线程的。任何建议都非常感谢。
答案 0 :(得分:4)
使用cli dlls尝试使用以下代码
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);
}
有关导出的完整文件列表,请查看我之前提供的另一个答案。
答案 1 :(得分:2)
您是否考虑过使用JODConverter?它为你做了所有繁重的工作。