前两天,老师找到我,想让我帮忙修复一个打不开的docx文档。症状大概是这样:
打开文件的时候花了较长时间,并且显示了乱码,并且老师使用WPS自带的文档修复功能也无法修复。
遇到这个情况,到底怎么办呢?
第一步:搜索
首先,我简单搜索了一下,发现docx其实是个zip格式的压缩包,因此,就尝试将这个文件改为zip后缀,想通过压缩软件来打开。
当打开后,压缩软件报了个错:
压缩文件没法正常打开。考虑到docx的本质是zip,因此,先尝试修复这个zip文件。
第二步:修复zip
在Linux系统下,可以使用以下的命令来修复zip:
代码语言:javascript复制zip -FF 样本.zip --out ok.zip
然后,就会出现这个提示:
这个提示的意思是,问我们这个压缩包是否为“单卷的”。(因为大文件可以切分为多个压缩包)
我们输入“y”即可。
接着我们可以看到输出了这样一串信息:
注意到“word/media/image1.png”这个文件的大小为0字节。估计是由于写入文件时出错,导致这个图片没有被写入。
打开修复好的压缩包,长这个样子:
大概找了找,发现文字都在word文件夹下的document.xml里面。
步骤3:尝试直接重命名
我尝试直接把这个压缩包重命名为docx,然后用word打开。没想到还是报错。猜测是因为文件中,有一些与docx相关的隐藏字段(不影响zip工作的那些)也损坏了。
步骤4:创建一个空的docx
考虑到目前是zip正常工作,但是docx不工作。思路就是,尝试新建一个空的docx,将其重命名为zip,再把待恢复的文件的zip包中的xml文件复制进去。这样不就创造出一个docx相关数据、zip的数据都完整的文件了吗!
步骤5:构建一个完整的docx文件
然后把待恢复文件的xml都拷贝进去,新换掉新文件里面的那几个xml,替换之后如下图所示:
步骤6:重命名为docx,完工!
把新的这个压缩包重命名为docx,打开就能看到文件了,直接完工咯!