我正在努力寻找损坏docx文件的原因。
似乎有数以百万计的工具可以修复损坏的文件-我试过5个,它们都修复得很漂亮,但没有一个能说明错误的来源。
有人知道其中一个吗?
开源将是一个额外的奖励。
谢谢。
更新:
我尝试使用frankpl推荐的Open XML SDK 2.0 Productivity Tool。它看起来很有希望,但它拒绝单独打开我损坏的文件,也拒绝与其他文件进行比较。
我发现了文件的[Content_Types].xml部分之间的差异,但仔细一看,只是顺序不同——我想这不会解释损坏的原因吧?
在有效(由Word修复)文件中:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>
<Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
<Override PartName="/word/numbering.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/>
<Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/>
<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
<Override PartName="/word/stylesWithEffects.xml" ContentType="application/vnd.ms-word.stylesWithEffects+xml"/>
<Override PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"/>
<Override PartName="/word/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
<Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/>
<Override PartName="/word/webSettings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml"/>
<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
</Types>
在损坏的文件中:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="xml" ContentType="application/xml"/>
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
<Override PartName="/word/numbering.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/>
<Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/>
<Override PartName="/word/stylesWithEffects.xml" ContentType="application/vnd.ms-word.stylesWithEffects+xml"/>
<Override PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"/>
<Override PartName="/word/webSettings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml"/>
<Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/>
<Override PartName="/word/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
</Types>
以下是免费的DOCX修复工具列表:
http://www.docxrepairtoolbox.com/
http://sourceforge.net/projects/damageddocx2txt/
http://sourceforge.net/projects/quickwordrecovr/
http://download.cnet.com/SysInfoTools-Docx-Repair/3000-2248_4-75330500.html
不是一个docx修复工具,但Open XML SDK 2.0 for Microsoft Office包含一个名为"Open XML SDK 2.0Productivity tool for Microsoft Office"的工具,您可以使用它来比较两个docx文件(如损坏的和正在工作的文件)。
我知道这个老问题,但我只想对有类似问题的人说。
以上内容文件不会成为问题的来源。(订单不是问题,它只是单词在修复中的作用——重新编号ID和重新排序)
可能导致损坏的原因只是在zip中有不属于那里的额外文件。
大多数时候,当它把手举在空中,没有给你任何提示时,是结构元数据出了问题。
我的意思是,不是指向document.xml中关系id的无效指针(例如),而是指向无效关系文件本身。例如,指向document.xml.rels中不在[content_Types].xml.中的内容类型
然而,当word修复所有内容时,它会重新编号所有id(并重新排序),因此比较工具很困难。
检查文件列表是否相同,集中精力处理[Content_Types].xml和document.xml.rels(以及其他rels文件),祝你好运!
许多年后,但您可以使用DocumentFormat.OpenXml.Validation
创建自己的错误检查器:https://msdn.microsoft.com/en-us/library/office/bb497334.aspx