如何以编程方式修改 Open/Libreoffice odt 文档?

Posted

技术标签:

【中文标题】如何以编程方式修改 Open/Libreoffice odt 文档?【英文标题】:How to programatically modify Open/Libre Office odt document? 【发布时间】:2014-01-10 08:43:34 【问题描述】:

我想在我的应用程序中使用 OO/LO PDF 生成功能。为此,我需要能够从我的代码中修改以前生成的 odt 模板。修改将只是简单的文本替换(甚至不需要正则表达式)。

OO's developer's guide 不包含任何可以让我做我需要做的事情的示例或教程。

LO's developer's guide 也没有用。它包含多个 java 示例,但没有有用的 C++ 代码。

对于这两种 API,都提供了 doxygen 文档 - 但没有一般性介绍,浏览整个代码库和逆向工程类并发现如何使用它们太乏味和麻烦。

总结一下:如何使用 C 或 C++ API 修改 odt 文件?

【问题讨论】:

你看examples了吗? @devnull 是吗?是的,我进行了研究并探索了整个指南 - 实际上是两个指南。有 C++ 的示例,尽管它们对我的用处几乎为零。 ODT 文档只不过是一个 ZIP 文件,其中主要包含 XML 文件。解压,编辑 XML,重新打包,就完成了。 @BartFriederichs 我已经想到并正在考虑它,尽管我更愿意以正确和正式的方式来做。文本可能会在内部被某些 xml 标签以某种方式扭曲,或者格式会改变并且我的代码变得无效......我想避免它。 【参考方案1】:

我最终提取了存档,处理和编辑了 xml,然后再次打包。

效果很好。

【讨论】:

【参考方案2】:

Qt 默认有 ODT 文件处理程序

http://doc.qt.io/qt-5/qtextdocumentwriter.html

【讨论】:

以上是关于如何以编程方式修改 Open/Libreoffice odt 文档?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式修改 Open/Libreoffice odt 文档?

如何以编程方式修改 OS X 照片库?

如何以编程方式修改通讯录中的联系电话?

如何以编程方式检查 .NET 中的有效删除(修改)或写入权限?

如何在播放时以编程方式逼真地修改视频剪辑?

在文档目录中找不到 plist 文件?如何以编程方式修改 plist?