2011-04-01 9 views
1

私は私の同僚のいくつかは一緒に入れている数千の単語ファイルを持っています。彼らはあまり技術的な人ではなく、10メガピクセルのカメラを撮っただけで、いくつかの写真をリサンプリングせずに直接ワードファイルに埋め込んでいます。多くの場合、画像はページ上で非常に小さくなるように縮小されます。例えば、3 "約2"と言います。MSWordのバッチリサンプリング画像

私は、これらを順番に、それぞれ〜300MBの単語ファイルをダウンロードし、画像をダウンサンプリングし、次に単語ファイルを保存するためのツールを書く必要があります。

私たちは主に.docxではなく.docファイルを扱っています。いくつかのパワーポイントファイルもあります。

私は私に利用できるいくつかのオプションがあります。私は、保存時にDPIとJPEGの品質を指定するための素晴らしいインターフェイスをユーザーに提供するC#でプログラムを書くことができます。代わりに、私はVBAマクロを使用してそれを行うことができますが、おそらくDLLを書くか、イメージのサイズ変更にサードパーティのものを使用する必要があります。

私はxlsファイルと.xlsxファイルをC#にインポートしていましたが、それは簡単でしたが、フォーマットされていないように見えるように、ダウンサンプリングされたイメージを.docファイルに書き戻すのは難しいでしょう。

私はいくつかの入力を得ることができます:私は彼らが必要なことをすることができるアクセス.docファイルのためのいくつかの無料のライブラリ(商用目的のため無料)はありますか?私がVBAでそれを書いていたのであれば、ダウンサンプリング問題以外にも、私が直面する他の障害はありますか?最後に、これに対処する方法の代替提案がありますか?

答えて

0

さて、私は約1週間で何の答えもコメントもありませんでしたので、私はその時間に私が学んだことを自分の質問に答えるつもりです。私はそれが、後で他の人のために有益になることを願っています。

私が言及したように、私たちは何千ものオフィス(ワードとパワーポイント)ファイルを取り扱っています。これらのファイルにはフル解像度のデジタルカメラ画像があります。ファイルは、数百MBまでのどこにでも置くことができます。ファイルのサイズは、数百MBから数MBにする必要があります。それは会社のネットワークに負担を与えており、人々がこれらの重要な文書を開くのは非常に遅いです。私はもともとやった

は7 - ジップで.docファイルをアンパックすることでした。私は、.docファイルから「WordDocument」を抽出するために隠されたSystem.Diagnostics.Processでコマンドラインインターフェイスを使用していました。

次に、JPEG SOIマーカーが見つかるまで(0xFF 0xD8)、EOIマーカー0xFF 0xD9まで読み取るまで、WordDocumentをバイト単位で読み込みます。 WordDocumentのその部分をストリームとしてImageに読み込み、そこでサイズを変更します。その後、画像をWordDocumentストリームに保存して、より小さな解像度/より小さな品質で保存します。私は、画像が正しく読み込まれていることと、WordDocumentに正しく挿入されていることを確認できます。私たちは多くのファイルを使い始めました。残念ながら、7-Zipでは.docファイルからこれらのコンポーネントを抽出できますが、再挿入することはできません。その仕事のすべては基本的に何のためでもありませんでした。私はこれについて間違っているかもしれませんが、私のバージョン(現時点では最新)は.docパッケージにファイルを追加することはできません。

次に、MS Office interopライブラリを使用するように関数を書き直しました。私は実行Word.ApplicationWord.DocumentDocument.Convert()を開き、.docxのファイルとして保存します。多くの場合、これで十分ですが、時にはファイルが少しだけ小さくなることもあります。 .docxファイルのgzipで内容の検査の際には、文書の作成者が何らかの形でDOCXへのOLE情報の価値は数十MB程度追加しましたマイクロソフトフォトエディター3を、使用しているようです。

だからここまでです。上記の2つの方法を概説しました。 最初のものは、.docファイルを使ってWordDocumentを再パッケージ化する方法が見つかった場合にのみ動作するraw .doc編集テクニックですが、私はそれをPowerPointファイルでテストしていませんが、プロセスは似ていると想定しています。 2番目の方法は、.docxと.pptxファイルを提供するという利点があります。これらのファイルは、zip互換パッケージングライブラリで開くことができ、リソースは簡単に編集/削除できます。残念ながら、Officeをマシンにインストールする必要があり、比較的新しいバージョンのオフィスがない場合は、Document.Convert()メソッドが例外をスローします。

これを読んでいる人に役立つことを願っています。

関連する問題