OpenOffice.orgのWriter文書をウェブで出版

OpenOffice.orgにはWriter文書をHTML/XHTMLにエクスポートする機能があるものの、きれいなHTMLファイルに変換するという観点からは満足な状態にあるとは言えず、最も単純な部類のWriter文書でさえも冗長でわかりにくいHTMLに変換されてしまう。また元のレイアウトを忠実に再現しようとしているものの、完璧とはほど遠い結果であることも多い。さらに言えば、今日ではブログやwikiがウェブの主役だというのに、HTMLページを静的に出版するというのはあまりにも90年代っぽい話ではないだろうか。それならば、Writer文書をきれいなHTMLページやwiki文法のテキストファイルへ変換したい場合には、どのような選択肢があるのだろうか?実は、かなり多くの選択肢があるのだ。

それではまず、一つのWriter文書をHTMLページへ変換する必要があるという最もシンプルな場合から始めてみよう。これを行なうやり方の一つとしては、odt2txt.pyとmarkdown.pyという2つのスクリプトを利用するという方法がある。odt2txt.pyスクリプトは、Writer文書 をプレーンテキストファイルに変換するのだが、その際、テキストの書式をmarkdown文法に変換する(markdownについて詳しくはこちらこちらの説明を参照のこと)。そして次にmarkdown.pyスクリプトを利用して、odt2txt.pyスクリプトの結果(markdown文法)のテキストファイルをHTMLに変換することができる。これらの変換は、2つのスクリプトをダウンロードして展開し、端末において以下のように実行するだけで行なうことができる。

  python odt2txt.py Loremipsum.odt > Loremipsum.txt
  python markdown.py Loremipsum.txt > Loremipsum.html

このようにodt2txt.pyスクリプトを利用して途中でいったん中間形式としてmarkdown形式に変換することには別の利点もある。つまり、数多くのブログやwikiやCMSが(直接的に、あるいはオプションのプラグイン経由で)markdown文法をサポートしているので、markdown文法のファイルはブログやwikiで簡単に出版することができるのだ。例えばDokuWikiを使用している場合には、markdownプラグインをインストールすることでmarkdown文法に対応させることができる。

なおデフォルトではプラグインをちゃんと動くようにするためにはいくらかの作業が必要となるのだが、そういう面倒な作業はしたくないという人のために、私が代わりに、すぐに使えるパッケージを作っておいた。そこでこちらのmarkdown.zipファイルをダウンロードして解凍し、解凍結果のディレクトリをDokuWikiの/lib/plugins/内に移動するだけで良い。wikiページでコンテンツの特定の部分をmarkdown文法で書くには、<markdown></markdown>タグを使う。

ところでwikiと言えば、HTML::WikiConverterという素晴らしいサービスを利用して、HTML形式のファイルを「ネイティブ」のwiki文法のファイルに変換することも可能だ。HTML::WikiConverterではメジャーなwikiシステムのwiki文法はすべてサポートされている。なおHTML::WikiConverterは独立したPerlスクリプトとして入手することもでき、自分のマシン上にインストールして使用することもできる。

もっとも、odt2txt.pyスクリプトを使えばまったく幸せ気分いっぱいというわけではなく、odt2txt.pyにも限界はある。odt2txt.pyスクリプトの最新版では、イタリック、ボールドイタリック、順序付きリスト/順不同リスト、ブロッククォート、コード用ブロック、ハイパーリンク、脚注といった書式がサポートされているものの、表と画像という2つの重要な要素が変換されない。

Writer文書のコンテンツをブログ上の記事として出版したいという場合には、Google Docsが提供している機能を利用することで簡単に済ますこともできる。そのための手順は単に手元のWriter文書をGoogle Docsへアップロードして編集用として開き、「Publish(出版)」ボタンを押すだけで良い。なお文書は、Google自身によるBloggerブログサービスだけでなく、ほとんどすべてのブログシステムで出版することができる。ただし、ブログシステムのAPIがGoogle Docsでサポートされている必要がある(サポートされているブログシステム/APIのリストがこちらでGoogleから提供されている)。

txt2tags(クリックで拡大)

WriterできれいなHTML文書を作成するための方法としては、文書内で直接的にマークアップを使用して、その文書をプレーンテキストファイルとして保存するという方法もある。ただしマークアップと言ってもHTMLマークアップを使うのではなく、もっと好ましいもの、すなわちtxt2tagsを使うという方法もある。txt2tagsは軽量マークアップ言語とそのための変換ツールのことで、txt2tagsでマークアップされたテキストファイルは、HTML、XHTML、MoinMoin wiki、LaTeXなど数多くの形式に変換することができる。HTMLの代わりにtxt2tagsマークアップを使うことの主な利点は、その単純さと柔軟さにある。txt2tagsは習得が簡単な文法を特徴としており、その一方で、目次の作成や、フィルタの指定や、ユーザ定義CSSの利用に対応したHTMLファイルの作成などといった巧妙なことができる(txt2tagsの機能のより詳しい説明については、この記事を参照のこと)。

さらに私は、txt2tagsマークアップを勉強したくないという人のために、メニューからtxt2tagsの書式を適用することができる、OpenOffice.org Writer用の単純な拡張(パッケージ)を作成した。このtxt2tags用の拡張はGPLで公開していて、SourceForge.netから入手可能になっている。txt2tags拡張をインストールするためには、ダウンロードし、Writerの「ツール」→「パッケージマネージャ」から「マイパッケージ」を選択して「追加」ボタンを押し、ダウンロードした .oxtファイルを指定する。なおバージョン2.0及びそれ以前のOpenOffice.orgを使用している場合には、パッケージをインストールする前に.oxtファイルの拡張子を.zipに変更する必要がある。また、デフォルトでは「Save as t2t(t2tとして保存)」というコマンドが無効になっているが、マクロの中でコメントの中に入っている以下の行をコメントの外に出すことで有効にすることができる。

Shell("txt2tags",1, "--target html -H --no-encoding " & Right(DocDir, Len(DocDir)-7) & "/" & FileName & ".t2t")

この「Save as t2t(t2tとして保存)」というコマンドを使うと、現在開いている文書をプレーンテキストとして保存すると同時にtxt2tagsを使用してHTMLファイル(ファイルの拡張子は .t2t)に変換するという作業を自動的にしてくれるようになる。もちろん希望するなら、ファイルを .html拡張子を付けて保存するようにコマンドを設定することも可能だ。

以上のような方法は「Export(エクスポート)」ボタンのクリック一つで済むというほど簡単に済むわけではないが、Writer文書からきれいなHTMLファイルを生成したい場合や、そのような文書をブログやwiki上で出版したいという場合には、是非試してみる価値のあるテクニックだ。

Dmitri Popovは、ロシア、イギリス、ドイツ、デンマークのコンピュータ雑誌で活躍するフリーランスのライター。

NewsForge.com 原文