36

我一直在尝试编写一个简单的 Markdown -> docx 解析器/编写器,但我完全坚持最后一部分,这应该是最简单的:即将文件夹压缩为 Word 或任何其他 .docx 阅读器将认出。

我的解析器编写器真的无关紧要:如果我简单地解压缩任何旧的 Word 生成的 *.docx,然后尝试使用通常的压缩实用程序重新压缩它,给它一个文件结尾的 docx,我就会遇到这个问题。是否应该添加一些神秘的标头,或者我需要一个特殊的 OPC 压缩实用程序,还是什么?

我不是很想要一个可以做到这一点的工具,而是想弄清楚应该有什么。它似乎独立于 WordprocessingML 规范。

不用说我对压缩一无所知。我可以通过 Google 找到的所有东西都与您可以在业务中使用的精美实用程序有关,但我正在制作一个小可执行文件,它可能是 GPLd 或其他东西,并且应该适用于任何东西。

4

4 回答 4

53

手动将 Open XML 文档压缩在一起的最常见问题是,如果您压缩目录而不是内容,它将无法工作。换句话说,[content_types].xml 文件和 word、docProps 和 _rels 目录需要驻留在 zip 文件的根级别。

于 2011-04-22T02:19:54.867 回答
20

以下是解压缩 my.docx 并重新压缩的步骤:

% mkdir unzipped
% cd unzipped/
% unzip ../my.docx    
% zip -r ../rezipped.docx *
% open ../rezipped.docx 
于 2013-04-19T13:28:33.913 回答
3

使用的压缩算法是“Zip”(Base 64)压缩。

7zip 似乎提供了这个,虽然我没有测试过。

于 2009-10-06T00:34:33.147 回答
3

根据 Mica 所说,ZIP 文件的内容是根据 Open Packaging Convention 组织的;参看。Microsoft 的开放打包公约要点

您可以使用 .NET System.IO.Packaging 来制作和操作 .docx 文件;这个类在 Mono 项目中实现。

于 2010-05-11T09:15:46.273 回答