前两天,老师找到我,想让我帮忙修复一个打不开的docx文档。症状大概是这样:

打开文件的时候花了较长时间,并且显示了乱码,并且老师使用WPS自带的文档修复功能也无法修复。

遇到这个情况,到底怎么办呢?

第一步:搜索

首先,我简单搜索了一下,发现docx其实是个zip格式的压缩包,因此,就尝试将这个文件改为zip后缀,想通过压缩软件来打开。

当打开后,压缩软件报了个错:

压缩文件没法正常打开。考虑到docx的本质是zip,因此,先尝试修复这个zip文件。

第二步:修复zip

在Linux系统下,可以使用以下的命令来修复zip:

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,打开就能看到文件了,直接完工咯!

转载请注明来源:https://longjin666.cn/?p=1661

欢迎关注我的公众号“灯珑”,让我们一起了解更多的事物~

你也可能喜欢

发表评论