如何在c#中重新压缩ODT文件并使其可读

本文关键字:文件 ODT 压缩 新压缩 | 更新日期: 2023-09-27 18:06:48

我正在开发一个库,将ODT文件的特定部分作为迷你报告引擎的Razor模板。它解压缩odt并修改content.xml,似乎是正确的结果,但重新压缩的文件给了我一个"一般I/O错误",当我试图在其中打开LibreOffice。

目前我正在使用c#的ZipFile.CreateFromDirectory()方法来创建zip文件。我是否需要在压缩文件方面做一些特别的事情,或者更有可能是我的错误在其他地方?

显然,我首先想到的是检查mimetype文件。我已经确认,将一组文件作为单个zip存档处理而不压缩它们(compressionlevel.none)不起作用,会产生相同的错误。我猜测这可能是因为mimetype文件必须是存档中的第一个文件。这真的是问题所在吗?我能做得更好吗?

如何在c#中重新压缩ODT文件并使其可读

我最终使用了两个不同的zip库。DotNetZip的ZipOutputStream允许我指定首先未压缩的mime文件。然后使用它的ZipFile类添加必要的文件夹及其内容。我在使用DotNetZip的Extract()方法时遇到了麻烦,所以我实际上使用。net的压缩库来解压缩文件,并使用DotNetZip将其压缩回来。

我还在寻找一个更好的方法来做到这一点,但它现在工作。