如何通过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格式的主要内容,如果未能解决你的问题,请参考以下文章