web-dev-qa-db-ja.com

破損したdocxファイルをデバッグするにはどうすればよいですか?

.docファイルと.pdfファイルは正常に出力されますが、.docxファイルが破損して出力されるという問題があります。

これを解決するために、.docxが破損している理由をデバッグしようとしています。

Docx形式は、.pdfや.docよりも余分な文字に関してはるかに厳しいことを学びました。したがって、docxファイル内のさまざまなxmlファイルを検索して、無効なXMLを探しました。しかし、私は何も見つけることができません。それはすべて正常に検証されます。

xml files I've been checking out

誰かが私が今調査するための指示を提案できますか?

更新:

フォルダ内のファイルの完全なリストは次のとおりです。

/_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修復ツールを誰かが知っているなら、それについて聞いていただければ幸いです。実際、私はそれを別の質問として投稿するかもしれません。

UPDATE 4(2017)

私はこの問題を解決したことはありません。以下の回答で提案されているすべてのツールを試しましたが、どれもうまくいきませんでした。

それ以来、もう少し進んで、Sublime Textで.docxを開くと、0000のブロックが欠落していることがわかりました。ここでの新しい質問の詳細: httpwebrequest中に.docxファイルでこの破損を引き起こしている可能性があるものは何ですか?

17

通常、特定のXMLファイルでエラーが発生すると、Wordはどのファイルのどの行でエラーが発生したかを通知します。したがって、問題はファイルの圧縮、またはフォルダ構造のいずれかに起因すると思います。

Wordファイルのフォルダ構造は次のとおりです。

.docx formatは、次のフォルダーを含むzipファイルです。

+--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内のフォルダの構造を投稿してください。

5
edi9999

「OpenXMLSDK 2.5 Productivity Tool」( http://www.Microsoft.com/en-us/download/details.aspx?id=30425 )を使用して、壊れた問題を見つけました。ハイパーリンク参照。

最初にSDKをダウンロード/インストールしてから、ツールをダウンロードする必要があります。ツールが開き、ドキュメントの問題を分析します。

5
Jeremy K

何年も遅れましたが、私はこれが実際に私のために働いているのを見つけました。 ( 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);
        }
3