我可以使用 zlib 解压缩实际上只是 zip 文件的 Microsoft Office 文件吗?
Can I use zlib to decompress microsoft office files which are actually just zip files?
我想使用 zlib 库扩充 Microsoft office 文件。据我所知,office 文件只是带有 docx、xlsx 等扩展名的 zip 文件。解压缩实用程序实际上可以解压缩文件。我可以对 zlib 库做同样的事情吗?
zlib 提供解压缩压缩数据和计算 CRC 所需的基本机制,这是解码 zip 文件所需的大部分内容。然而 zlib 不提供 zip 文件格式解码,即解码 headers,您需要环绕 zlib 调用以进行解压缩和校验值计算。
zlib 确实带有 minizip, which is in the contrib directory of the source distribution, to do that job. You can also look at libzip or libarchive,它使用 zlib 并提供 zip 文件功能。
确实,新的 office 文件实际上是 .zip 文件。不是旧的 .doc 和 .xls,而是新的 .docx 和 .xlsx。如果将它们重命名为 .zip 并打开它们,您会看到。然后您将看到内容为 .xml 个文件。
示例代码类似于
HZIP hz = OpenZip(AgentDLLZip, 0, ZIP_FILENAME);
ZIPENTRYW ze;
GetZipItemW(hz, 0, &ze);
UnzipItem(hz, 0, ze.name, 0, ZIP_FILENAME);
CloseZip(hz);
并且只需使用您可以找到的几个文件 here。
我想使用 zlib 库扩充 Microsoft office 文件。据我所知,office 文件只是带有 docx、xlsx 等扩展名的 zip 文件。解压缩实用程序实际上可以解压缩文件。我可以对 zlib 库做同样的事情吗?
zlib 提供解压缩压缩数据和计算 CRC 所需的基本机制,这是解码 zip 文件所需的大部分内容。然而 zlib 不提供 zip 文件格式解码,即解码 headers,您需要环绕 zlib 调用以进行解压缩和校验值计算。
zlib 确实带有 minizip, which is in the contrib directory of the source distribution, to do that job. You can also look at libzip or libarchive,它使用 zlib 并提供 zip 文件功能。
确实,新的 office 文件实际上是 .zip 文件。不是旧的 .doc 和 .xls,而是新的 .docx 和 .xlsx。如果将它们重命名为 .zip 并打开它们,您会看到。然后您将看到内容为 .xml 个文件。
示例代码类似于
HZIP hz = OpenZip(AgentDLLZip, 0, ZIP_FILENAME);
ZIPENTRYW ze;
GetZipItemW(hz, 0, &ze);
UnzipItem(hz, 0, ze.name, 0, ZIP_FILENAME);
CloseZip(hz);
并且只需使用您可以找到的几个文件 here。