namazuを参考にしたwvWareの導入

Linux

 環境はFedoraCore2って古いな。

ダウンロード
  1. http://prdownloads.sourceforge.net/wvwareから「wv-1.0.3.tar.gz」をダウンロード。
解凍およびインストール
 # su
 # tar -zxvf wv-1.0.3.tar.gz
 # cd wv-1.0.3
 # view INSTALL((終了はCtrl+Z))
 # ./configure
 # make
 # make install(※デフォルトでは /usr/local/bin/ に保存されます)
 # man wvText(※とりあえずwvTextのマニュアルを読んでみる)
実行
 wvText word.doc word.txt

 テキストファイル名を省略することは出来ない。
 画像がpng*1やwmf*2と言った形式で出力される。
 \x07をnullに。\x0Bを\x0D0Aに置換すると変な文字化けも除去される。
 'lynx'や'links'がないと言われるが、無視しないと変換できない。

実用化

 wvTextは日本語が文字化けすると言った問題が発生している。そのため、

 wvWare -x wvText.xml Input.doc > Output.txt

 を用いる方法や(未検証)、'wvHtmlを用いて'タグを削除する方法(検証済み)が考えられる。また、タグ削除の際の懸念事項である'<'や'>'の記号だが、きちんとHTMLコードに変換されているため、気にする必要はない。
 以下はタグを削除すると共に、テーブルタグの内容も削除するプログラムである。当然ながらHTMLがvaidなこと前提。まぁツールが出力するHTMLなのでvaidだと思いますが。

open(FILE, "$ARGV[0]");
@FILE = <FILE>;
close(FILE);
$FILE = "@FILE";

$n1 = $FILE =~ s/<.*?>//g;

$table = 0;
$table2 = 0;
for($i=0; $i<scalar(@FILE);$i++){
        if($table2 == 1){
                $table = 0;
                $table2 = 0;
        }
        if(grep /\<table/, $FILE[$i]){ $table = 1; }
        if(grep /table\>/, $FILE[$i]){ $table2 = 1; }
        if($table == 1){ $FILE[$i] = ''; }
        $FILE[$i] =~ s/<.*?>//g;
}

print @FILE;

exit;

Windows

  1. Wv for Windowsにアクセス
  2. 使いたいだけならば、"Complete package, except sources"をダウンロード(wv-2.0.2.exe)
  3. インストール
  4. [インストール先]/binにPathを通す

 準備完了。
 コマンドプロンプトから、

 wvWare InputFile.doc

 コマンドプロンプト上にHTML形式へ変換されたデータが出力されます。
 これをファイルに出力するためには、

 wvWare InputFile.doc > OutputFile.html

 で。

 私がやりたいのはテキスト形式への変換なので、これではダメです。Linux上ではwvTextなるコマンドがあるのですが、残念ながらそんなコマンドはないと言われてしまいます。
 いろいろと調べてみたところ、configure.xmlなるファイルがあるとのこと。場所は…usr/local/…んなもんはありません。
 "share/wv/"にそれらしきXMLファイル群を発見。

 wvWare -x wvText.xml InputFile.doc > OutputFile.txt

 成功。

I won't mmap that file, using a slower method

 と言われてしまい、『wvWare の stderr 出力を捨てる処理』を行えばいいとのことなのですが、その方法がわかりません。実用上は問題ないのですが、気持ち悪いのでどなたか助言をお願いします。

備考
  • Linux上のwvTextでは
 wvText InputFIle.doc OutputFile.txt

 となっており、Outputは省略できません。が、上記オプションではOutputを記述してもファイルは出力されないので注意。

 Wordの文字コードは気にしないとして、出力されたのはUTF-8Nのようです。

後日談

 Wordのデザインモード(?)を使用するとWindowsの環境では致命的なエラーで強制終了

 http://sourceforge.net/projects/wvware/にあるのは更新されてる……?

*1:透過処理までされている

*2:データが重なり合って見えた物ではない