4

我需要使用 OpenOffice Java API 来复制文档部分并将其粘贴到另一个文档部分。到目前为止,我已经成功地复制了源文档部分的文本并将其粘贴到目标文档的部分上(参见下面的示例)。

但是,问题在于非文本元素(图形、格式、表格等)不会粘贴到目标文档上。

我用来提取源部分文本的代码是:

// 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,但我还没有找到任何方法来复制整个部分。有什么办法吗?

4

1 回答 1

1

我遇到了同样的问题。我最终通过创建两个光标来解决,一个在我想要复制的内容的开头,然后另一个在内容的末尾使用,然后将第一个的光标选择扩展到第二个。这在第一个光标上使用了 gotoRange 方法,传入第二个光标和一个 True 来告诉它扩展选择。

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

然后我创建了一个自动文本容器、组和包含选择的元素。并使用自动文本条目的 applyTo 方法在光标位置插入/粘贴内容。我为自动文本容器的名称使用了 guid,因此它是唯一的,然后在我完成后删除了容器。

自动文本示例: http ://api.openoffice.org/docs/DevelopersGuide/Text/Text.xhtml#1_3_1_6_Auto_Text

如果你愿意,我可以发布我的代码,但是它是用 Python 编写的。

于 2011-02-22T15:00:07.460 回答