namazuを参考にしたwvWareの導入
Linux版
環境はFedoraCore2って古いな。
ダウンロード
- 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版
- Wv for Windowsにアクセス
- 使いたいだけならば、"Complete package, except sources"をダウンロード(wv-2.0.2.exe)
- インストール
- [インストール先]/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 出力を捨てる処理』を行えばいいとのことなのですが、その方法がわかりません。実用上は問題ないのですが、気持ち悪いのでどなたか助言をお願いします。
後日談
Wordのデザインモード(?)を使用するとWindowsの環境では致命的なエラーで強制終了
http://sourceforge.net/projects/wvware/にあるのは更新されてる……?