如何在c中读取,操作和编写.docx文件

我正在读取缓冲区中的.docx文件并成功将其写入新文件。 (在C中使用fread和fwrite)但是现在我想为了加密的目的而增强此项目的范围。 我希望能够操作缓冲区,然后将其写入新文件。

现在有一个问题可能是,我需要什么操作? 它可以是任何真正的东西,就像我在缓冲区的位置15写入字符'一样。然后写下这个新缓冲区(在位置15有字符',但缓冲区的其余部分保持不变)新的.docx文件。

buffer[15] = 's';

当我这样做时,创建的文件已损坏。 由于我并不完全了解.docx文件的结构,因此该字节数15可能是一些潜在标识符,标题或创建非损坏文件所需的.docx文件的任何重要信息。

但是,我所了解的.docx内部结构是:

  • 它由压缩在一起的XML文件组成。

  • 用.docx文件编写的内容(例如,我有一个名为test.docx的文件,它包含“你好,你好吗?”),那么内容“你好,你好吗?” 存储在XML文件中。

  • 在压缩到一起的文件中有一个.rels(未确认)扩展文件,告诉MS有关内容存​​储在文件中的位置,即在何处查找内容。

  • 除了这3点之外,我对于.docx文件的结构知之甚少。 现在考虑所有这些,我希望能够从压缩的XML文件中提取.docx文件的内容,在缓冲区中读取(在C中),根据需要更改缓冲区,然后创建一个新文件,与缓冲区中存在的新内容一起使用。

    有人可以通过这个指导我吗? 如果我需要提供代码或其他重要细节,还请友情提一下。 提前致谢。

    编辑

    这一切的目的:

    我想要做所有这些加密。 通过对文件进行加密(使用AES),整个文件将变得不可读,损坏,并且内部的所有内容都将从其位置改变。 当我解密该文件时,该文件无法打开。 我的猜测是,由于AES解密算法并不知道如何解析从解密加密文件中恢复的内容,进入新的.docx文件,因此无法正确放置内容/结构。

    我试过了。 原始的docx文件是14 KB,加密的docx文件是14 KB以及解密的docx文件。 但是当我尝试打开解密文件时,它说文件已损坏。 另外我试图在HEX编辑器中检查它。 正好30个字节后,解密文件只有00个字节。


    DOCX文件基于OPC和OOXML。 OPC基于Zip。 OOXML基于XML。 因此,您可以使用Zip和XML工具对DOCX文件进行操作。 除此之外,为了得到更好的指导,你必须更具体地说明你想做什么。

    将字符戳到XML文件中的随机索引位置是在错误的抽象层次上操作的。

    链接地址: http://www.djcxy.com/p/45523.html

    上一篇: How to read, manipulate and write .docx file in c

    下一篇: files downloaded from google drive usin picker are corrupted