【问题标题】:Copy a whole ODT (Openoffice Writer) document section to other document with Openoffice Java API (UNO API)使用 Openoffice Java API (UNO API) 将整个 ODT (Openoffice Writer) 文档部分复制到其他文档
【发布时间】:2010-08-18 16:57:53
【问题描述】:

我需要使用 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,但没有找到任何复制整个部分的方法。有什么办法吗?

【问题讨论】:

标签: java openoffice.org openoffice-writer uno odf


【解决方案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 编写的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多