docxをZipFile.CreateFromDirectory
で元のファイルに再圧縮するのはなぜですか?docxファイルを解凍し、その内容を比較し、新しい併合されたdocxファイルを作成します
私は "docx"(および他のワードドキュメント)比較用のモジュールを構築しています。まず、2つの "docx"ファイルを解凍します。次に、ドキュメントの解凍後に作成されたディレクトリ構造のxmlファイルを比較してマージします。最後に、マージされたディレクトリを圧縮し、新しい "docx"ファイルを作成します。 2つの "docx"ファイル(元のファイルとマージされたファイル)は、Microsoftの単語比較では同じです。また、xmlの内容はCRC32の比較でも同じですが、マージされた "docx"ファイルのサイズまたはCRC32値は元のものとは異なります。圧縮解除の場合は、 System.IO.Compressionライブラリを使用します。
これは圧縮の問題ですか? 「docx」ファイルなどのオープンxml形式の文書を作成するためにMicrosoft Word(および他の閲覧者が使用する)の圧縮アルゴリズムは何ですか?
いくつかのdocx比較のためにいくつかの単位テットを実行します。だから私は、テストが正しく渡されたかどうかをチェックする唯一の方法は、crc32の数値を比較することだと思います。
public static void CreateCompressFile(string dirinfo, string originalFile)
{
FileInfo fi = new FileInfo(originalFile);
ZipFile.CreateFromDirectory(dirinfo,
originalFile.Replace(fi.Extension, "_tmp" + fi.Extension),
CompressionLevel.Fastest, false);
}
問題点を明確にしてください。 (docxは実際にはZIPです - すべての詳細は公式のドキュメントにあります - https://msdn.microsoft.com/en-us/library/dd773189(v=office.12).aspx) –
**圧縮解除後** **再圧縮**統合された文書はcrc32の値が異なりますが、docxファイルは元のファイルと同じです。 – dsmyrnaios