21

我有一个问题,即 .doc 和 .pdf 文件输出正常,但 .docx 文件输出损坏。

为了解决这个问题,我正在尝试调试 .docx 损坏的原因。

我了解到 docx 格式在额外字符方面比 .pdf 或 .doc 更严格。因此,我在 docx 文件中搜索了各种 xml 文件,以寻找无效的 XML。但我找不到任何东西。这一切都很好。

我一直在检查的 xml 文件

有人可以建议我现在调查的方向吗?

更新:

文件夹内文件的完整列表如下:

/_rels
    .rels

/customXml
    /_rels
        .rels
    item1.xml
    itemProps1.xml

/docProps
    app.xml
    core.xml

/word
    /_rels
        document.xml.rels
    /media
        image1.jpeg
    /theme
        theme1.xml
    document.xml
    fontTable.xml
    numbering.xml
    settings.xml
    styles.xml
    stylesWithEffects.xml
    webSettings.xml

[Content_Types].xml

更新 2:

我还应该提到损坏的原因几乎可以肯定是代表我的错误二进制文件 POST。

为什么 docx 文件被二进制帖子损坏,但 .doc 和 .pdf 没问题?

更新 3:

我已经尝试过演示各种 docx 修复工具。他们似乎都可以修复文件,但没有给出错误原因的线索。

我的下一步是使用修复后的版本检查损坏文件的内容。

如果有人知道一个 docx 修复工具,它会给出一个体面的错误消息,我会很高兴听到它。事实上,我可能会将其作为一个单独的问题发布。

更新 4 (2017)

我从来没有解决过这个问题。我已经尝试了以下答案中建议的所有工具,但没有一个对我有用。

从那以后,我又进步了一点,0000在 Sublime Text 中打开 .docx 时发现了一个缺失的块。此处新问题中的更多详细信息:在 httpwebrequest 期间,什么可能导致 .docx 文件损坏?

4

4 回答 4

10

我使用“Open XML SDK 2.5 Productivity Tool” ( http://www.microsoft.com/en-us/download/details.aspx?id=30425 ) 来查找超链接引用损坏的问题。

您必须先下载/安装 SDK,然后是工具。该工具将打开并分析文档中的问题。

于 2014-01-24T17:16:48.623 回答
6

通常,当特定 XML 文件出现错误时,Word 会告诉您错误发生在哪个文件的哪一行。所以我相信问题来自文件的压缩,或者文件夹结构。

下面是Word文件的文件夹结构:

.docx格式是一个压缩文件,其中包含以下文件夹:

+--docProps
|  +  app.xml
|  \  core.xml
+  res.log
+--word //this folder contains most of the files that control the content of the document
|  +  document.xml //Is the actual content of the document
|  +  endnotes.xml
|  +  fontTable.xml
|  +  footer1.xml //Containst the elements in the footer of the document
|  +  footnotes.xml
|  +--media //This folder contains all images embedded in the word
|  |  \  image1.jpeg
|  +  settings.xml
|  +  styles.xml
|  +  stylesWithEffects.xml
|  +--theme
|  |  \  theme1.xml
|  +  webSettings.xml
|  \--_rels
|     \  document.xml.rels //this document tells word where the images are situated
+  [Content_Types].xml
\--_rels
   \  .rels

似乎您只有 word 文件夹中的内容,不是吗?如果这不起作用,您能否发送损坏的 Docx 或在您的 zip 中发布您的文件夹结构?

于 2013-08-13T07:59:18.283 回答
4

晚了很多年,但我发现这实际上对我有用。(来自https://msdn.microsoft.com/en-us/library/office/bb497334.aspx

(wordDoc 是一个WordprocessingDocument

using DocumentFormat.OpenXml.Validation;

        try
        {
            var validator = new OpenXmlValidator();
            var count = 0;
            foreach (var error in validator.Validate(wordDoc))
            {
                count++;
                Console.WriteLine("Error " + count);
                Console.WriteLine("Description: " + error.Description);
                Console.WriteLine("ErrorType: " + error.ErrorType);
                Console.WriteLine("Node: " + error.Node);
                Console.WriteLine("Path: " + error.Path.XPath);
                Console.WriteLine("Part: " + error.Part.Uri);
                Console.WriteLine("-------------------------------------------");
            }

            Console.WriteLine("count={0}", count);
        }

        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
于 2016-06-20T19:52:12.463 回答
-3

网络 docx 验证器为我工作: http: //ucd.eeonline.org/validator/index.php

于 2014-11-08T23:21:07.013 回答