如何通过api将文本文档(ODT或DOCX)中的表格导出为EMF格式

Posted

技术标签:

【中文标题】如何通过api将文本文档(ODT或DOCX)中的表格导出为EMF格式【英文标题】:How to export table in text document (ODT or DOCX) to EMF format via api 【发布时间】:2019-04-01 07:12:41 【问题描述】:

我有一个带有一些表格的文本文档(ODT 或 DOCX)。我使用 LibreOffice API(Java 语言)打开此文档。

我想将表格导出为 EMF 文件。有任何想法吗? 附言LibreOffice (OpenOffice) API 的官方文档很差。在这篇非常有趣的文章http://fivedots.coe.psu.ac.th/~ad/jlop/ 中找不到此信息。

【问题讨论】:

【参考方案1】:

没有现成的 LibreOffice API 可以做到这一点,但取决于你如何决定细节,我认为这仍然是可行的。几个提示:

    如果要导出表格,首先需要遍历文档的表格容器,XTextTablesSupplier 允许你这样做。

    然后您可能希望将每个表格复制到单独的 Writer 文档中,因此当您导出 Writer 页面时,只有表格显示在那里,没有其他内容。 (请记住,表格可能跨越多个页面)。使用XTextCopy 接口可以在文档之间复制内容。

    一旦你有一个只包含一个表的 Writer 文档,你需要遍历文档的所有页面:打开的文档的组件可以转换为 XRenderable,然后 getRendererCount() 告诉你页数。 (你也可以使用XPageCursor,但是下面无论如何都需要以前的接口。)

    最后,一旦你有了单个文档的单个页面,就可以使用XRenderer 接口的render() 方法将页面实际呈现为矢量格式。

我建议您考虑是否真的想在 LibreOffice 本身内完成所有这些工作;如果您将步骤 3. 和 4. 替换为导出为 PDF,然后您自己处理 PDF 到 EMF 的转换,您可以简化您的工作。

【讨论】:

以上是关于如何通过api将文本文档(ODT或DOCX)中的表格导出为EMF格式的主要内容,如果未能解决你的问题,请参考以下文章

如何将文本文档批量拆分为变量

如何将文本文档表示为特征向量进行文本分类?

将文本文档中的字符串值分离到熊猫数据框中

在 pandoc 中将 .odt 转换为 .docx

在 PHP 中将数据插入到 .docx 和 .odt

将文件夹系统内的所有 .docx 转换为 .odt,然后删除所有 .docx 文件