2009-10-03 13 views
31

単純なMarkdown - > docxパーサー/ライターを作成しようとしていますが、最も簡単な最後の部分に完全に固執しています。 docx、Wordまたは他の.docxリーダーが認識するようにします。WordprocessingMLフォルダを読み込み可能なdocxに圧縮するには

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

私はあまりそれをするツールを望んでいません。そこにあるはずのものを理解するためです。これはWordprocessingML仕様とは独立しているようです。

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

+2

エリックホワイトは右、私は「周りの手動オープンXMLドキュメントをビュン最も一般的な問題」を経験したことを推測して、正確です。このエラーは、質問のタイトルにすでに表示されています。マテリアルを個別にZipファイルに結合するのではなく、マテリアルを含むフォルダを圧縮していました。それは私がこのことを推測しているかもしれませんが、もちろん.docxファイルを解凍すると、あなたは強調して小さなディレクトリを取得するのではなく、あなたが働いているディレクトリのすべてにファイルを書きます。 - もちろん、これは私が上で言及したプロジェクトに戻るべきであることを意味します。:) – applicative

答えて

1

使用される圧縮アルゴリズムは "Zip"(ベース64)圧縮です。

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

2

さらに、Mica氏によると、ZIPファイルの内容はオープンパッケージング条約に従って編成されています。 cf. Microsoft's Essentials of the Open Packaging Convention

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

37

手動で開くXML文書を手動で圧縮する際の最も一般的な問題は、内容ではなくディレクトリを圧縮すると機能しないことです。つまり、[content_types] .xmlファイルとdocProps、および_relsという単語は、zipファイルのルートレベルに存在する必要があります。ここで

+4

こんにちは、私は元のポスターですが、私はこのS.Oを失った。私はこれを「正解」とマークします。あなたは、私の間違いは、すべての資料を含むディレクトリを圧縮し、正しい注文、圧縮の形...必要なものと思ったことです。私がすべての関連ファイル(ルートレベルにある 'word'のようなサブディレクトリの卸売り追加を含む)を1つのzipファイルに蓄積すると、MSWordはファイルをオープンしても大丈夫です。これまでのところ、私はOS Xでこれを試してみました。私は物事をもっと勉強します。 – applicative

+0

WinZipとWinRARによる真のオープンで自己製のdocxはすべて読み込み可能です! –

11

がmy.docxと再zipファイルを解凍する手順は、次のとおりです。

% mkdir unzipped 
% cd unzipped/ 
% unzip ../my.docx  
% zip -r ../rezipped.docx * 
% open ../rezipped.docx 
関連する問題