2010-08-18 109 views
4

我需要使用OpenOffice Java API複製文檔部分並將其粘貼到另一個文檔部分。到目前爲止,我已經設法複製源文檔部分的文本並將其粘貼到目標文檔的部分上(請參閱下面的示例)。使用OpenOffice Java API(UNO API)將整個ODT(OpenOffice Writer)文檔部分複製到其他文檔中

但是,問題在於非文本元素(圖形,格式,表等)不會粘貼到目標文檔上。

我已經用於提取源部分的文本中的代碼是:

// Read source file text 
XComponent xComponentSource = this.ooHelper.loadDocument("file://" + fSource); 
// Get sections 
XTextSectionsSupplier textSectionsSupplierSource = (XTextSectionsSupplier)UnoRuntime.queryInterface(XTextSectionsSupplier.class, xComponentSource); 
XNameAccess nameAccessSource = textSectionsSupplierOrigen.getTextSections(); 
// Get sections by name 
XTextSection textSectionSource = (XTextSection)UnoRuntime.queryInterface(XTextSection.class, nameAccessOrigen.getByName("SeccEditable")); 
//Get section text 
String sectionSource = textSectionSource.getAnchor().getString(); 

要粘貼在目標部分中的文本,該代碼選擇部分是相同的,並予設定的串:

textSectionDest.getAnchor().setString(sectionSource); 

我已經閱讀了API Javadoc,但我還沒有找到任何方法來複制整個部分。有什麼辦法可以做到嗎?

+0

該OOOForum教程應該幫助:[獲取內容並將其傳輸到另一個文檔](http://www.oooforum.org/forum/viewtopic.phtml?t=71000)。 – 2011-03-02 15:51:24

回答

1

我有這個相同的問題。我最終通過創建兩個遊標來解決問題,一個是我想要複製的內容的開始,另一個是使用內容的結尾,然後將第一個遊標的遊標選擇擴展到第二個。這對第一個遊標使用gotoRange方法,傳入第二個遊標,並使用True來指示它擴展選擇。

光標示例: http://api.openoffice.org/docs/DevelopersGuide/Text/Text.xhtml#1_3_1_1_Editing_Text

然後創建一個自動文本容器中,組和元件含有選擇。並使用自動圖文集條目的applyTo方法將內容插入/粘貼到光標位置。我使用了guid作爲autoText容器的名稱,因此它將是唯一的,然後在完成後刪除容器。

自動圖文集實例: http://api.openoffice.org/docs/DevelopersGuide/Text/Text.xhtml#1_3_1_6_Auto_Text

,如果你想我可以張貼我的代碼,但它是用Python編寫的。

+1

請發佈您的代碼。 – hjdm 2013-01-18 12:29:33