36

私は単純な Markdown -> docx パーサー/ライターを作成しようとしましたが、最後の部分で完全に行き詰まっています。これは最も簡単なはずです。つまり、フォルダーを .docx に圧縮して、Word またはその他の .docx リーダーが認識。

私のパーサーライターは実際には関係ありません。古い Word で生成された *.docx を単純に解凍し、通常の圧縮ユーティリティで再圧縮して、ファイルの末尾に docx を付けようとすると、この問題が発生します。追加しなければならない不思議なヘッダーがありますか、それとも特別な OPC 圧縮ユーティリティが必要ですか?

そこにあるはずのものを把握するために、これを行うツールはあまり必要ありません。WordprocessingML 仕様とは無関係のようです。

言うまでもなく、私は圧縮について何も知りません。私が Google で見つけたものはすべて、ビジネスで使用できる派手なユーティリティに関係していますが、GPLd か何かで、何にでも動作する小さな実行可能ファイルを作成しています。

4

4 に答える 4

53

Open XMLドキュメントを手動で圧縮する際の最も一般的な問題は、コンテンツの代わりにディレクトリを圧縮すると機能しないことです。つまり、[content_types] .xmlファイル、およびword、docProps、および_relsディレクトリは、zipファイルのルートレベルに存在する必要があります。

于 2011-04-22T02:19:54.867 に答える
20

my.docx を解凍して再圧縮する手順は次のとおりです。

% mkdir unzipped
% cd unzipped/
% unzip ../my.docx    
% zip -r ../rezipped.docx *
% open ../rezipped.docx 
于 2013-04-19T13:28:33.913 に答える
3

Mica の発言に加えて、ZIP ファイルの内容は Open Packaging Convention に従って編成されています。参照。Microsoft の Open Packaging Convention の Essentials

.NET System.IO.Packaging を使用して、.docx ファイルを作成および操作できます。このクラスは Mono プロジェクトに実装されています。

于 2010-05-11T09:15:46.273 に答える
3

使用される圧縮アルゴリズムは、「Zip」(Base 64) 圧縮です。

私はそれをテストしていませんが、7zipはこれを提供しているようです。

于 2009-10-06T00:34:33.147 に答える