2011年8月7日日曜日

wordファイル(.docファイル)をtxtに変換する方法 -> wvWare

非windows ユーザーにとって、よくあるイラっとする瞬間の一つは電子メールでwordファイルが送られてきたときである(同じくらいよくあるのイラっとする瞬間は、flash が固まって、$ pkill npviewer するときである)。

そんな時は
1.windows マシンを立ち上げて、word を立ち上げて読む
編集する必要がある時は、この方法に限るのだが、非力なノートPCが立ち上がるまで待つの苦痛である。
あと、ウイルス対策はしてあるとはいえ、ちょっと怖い。

2.OpenOffice で見る
レイアウトは崩れるとはいえ、内容を確認する程度はできる。しかし、出張先などで、手元のマシンが非力なノートPCだったりすると、立ち上がるまで待つのが苦痛である。
ウイルス感染の確率はかなり下がるのは安心。

そして最近第3の方法としてwvWare の存在を知った

3.wvWare
wvWare とは「word document を変換するための library 」であり、AbiWord(GNOME Office に含まれるフリーでオープンソースなワードプロセッサ)の一部である。
http://wvware.sourceforge.net/
wvWare 一群の application を使うことで、word やpdf などの保存形式のファイルを、html や latex source など、unix freindly な txt 形式に近いものに変換することができる。
windows 用の同様の機能を持つものに xdoc2txt がある。

(1). install の仕方
# portupgrade -N textproc/wv
ちなみにwv2はライブラリのみインストールで、executableはできないので注意。

(2). 使い方
$ wvHtml input.doc output.html
で変換できる。ブラウザで見ると段組みや太字なども保たれている。
$ wvText input.doc output.txt
は手軽に lv で見るのにおすすめ。詳しくは
$ man wvWare
するよろし。

(3). 応用
手元にあるマシンが、Xが死んでいる、あるいはXやopenofficeが載らないくらい非力なとき
kon(日本語をconsole で表示するプログラム、japanese/kon2-16dots、32bit machineのみ)+emacs(editors/emacs)+wanderlust(emacs 用のmailer、imapにも対応、mail/wanderlust)+wvHtml+w3m(pager/text-based WWW browser、www/w3m)で
黒い画面で日本語の手紙を読めて、wordの添付ファイルも読める。

Xは載るけれど、OpenOfficeを使うには非力な時、あるいは待てないとき
wvHtml+web browser(firefoxやepiphanyなど)で word ファイルが読める。

メールサーバにlogin できるシステムで、wvWareとw3mを入れてもらえた場合
ssh することで、添付ファイルを手元にダウンロードしないで内容を確認できる。

参考
FreeBSD ports最新ニュース textproc/wv http://blog.livedoor.jp/freshports/archives/1897769.html
wvWare の公式サイト  http://wvware.sourceforge.net/
2php : wvWare(wvHtmlなど) のインストールの仕方・使い方 http://2php.jp/install/wvware.html
Abiword の公式サイト http://www.abisource.com/ 
xdoc2txt の公式サイト http://www31.ocn.ne.jp/~h_ishida/xdoc2txt.html

追記(20110927)
wvTxetは内容に日本語が含まれるとしくじることがあるので、txtファイルを作るにはw3m(もちろん日本語対応の japanese/w3m-img/)を使った方が便利そうだ。そして、ユーザーインターフェースとしてはlessが一番便利そうだ。以上をふまえて、lessdocという自作wrapperで、わたしは暮らしている。

#!/bin/sh
# lessdoc.sh
for i; do
    TMPDIR=`mktemp -d /tmp/tmp_lessdocXXXX` || exit 1 
    if ! wvHtml $i $TMPDIR/tmp.html; then
    echo "You need to install wvWare !!!"
    else
    w3m -dump $TMPDIR/tmp.html |lv -Outf
    fi
    rm -r $TMPDIR;
done