2009-06-23 51 views
1

我需要能夠允許用戶將他們上傳的.doc文件導出爲各種格式。我開始使用OO SDK,並且還使用XSLT設置了一些自定義過濾器。一切正常,我可以將word文檔導出爲pdf等。使用OpenOffice SDK進行文檔轉換

但是我想將其作爲Web服務運行。我希望在專用節點上運行此轉換服務,因此想要轉換其文檔的用戶上傳的所有文件都將到達此專用節點。我的網絡應用程序本身是基於PHP的。使用OO SDK執行轉換的最佳方式是什麼?我將不得不將結果文件存儲在數據庫中。

我是否需要運行多個OO實例並將每個文件轉換爲特定實例?而且,我是否需要編寫一個自定義服務器來處理這個問題,因爲我不知道OO是否是多線程的。任何建議不勝感激。

+0

我在我的工作中試圖做到這一點,但我們不得不放棄它,因爲我們無法從OOo中獲得非標準佈局和圖像等文檔元素的可傳遞位置。除了使用MS Office作爲轉換器之外,我們會做幾乎相同的設置。 – Chris 2009-06-23 06:49:08

回答

2

你看過使用JODConverter?它爲你做了一切繁重的工作。

+0

不要忘記它的基於Python的表哥,PyODConverter! – 2009-07-12 05:05:01

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

對於過濾器的名字到出口的完整列表,看看另一個答案,我之前給了。

相關問題