rst2pdfを使うには
設計書をTracのWikiに書いて、後でPDFで出力できないか?というお話があったので、調べてみた。Tracが標準でサポートしているReStructuredText(以下ReST)をだったらPDFに変換できました。たぶんそれをうまく使えばTrac/Wikiで管理している設計書をPDFにできるんじゃなかろうか、ということでメモ。使ったものはPythonで書かれているrst2pdf。世の中これ以外にもrst2latexしてそっからplatex2dvi->dvi2pdfっていう手順を踏むとか、RubyでかかれたReSTを使うとか、ありましたよ。
TracにあるデータをPDFにするんだったら、XML-RPCを使ってWikiからデータ引っこ抜いて"{{{","}}}"をうまくなんとかやっつければ、そのまま変換できますな。
インストール
注意
easy_installを使ってインストールすることもできるけど、ソースを落としてきてコンパイルとかして、こけるこける><easy_installはまだネイティブコードのない奴に限る気がする。
試した環境
- Ubuntu Linux 8.10/Python 2.5(成功)
最初Windows XP 64bit Professional/Python 2.5って環境でやってたけど、上記の注意で書いたとおり、コンパイル環境を構築できずに断念した。
手順
1. 依存するライブラリからインストールしていく。
rst2pdfが依存するライブラリはPython Imaging Library (PIL)、UniConvertor、ReportLabの3つ。この順にインストールするが、Ubuntuの場合すべてaptitudeでインストール可。PILはPython2.5に同梱されていますのでインストールする必要ないかも。
sudo aptitude install python-imaging sudo aptitude install python-uniconvertor sudo aptitude install python-reportlab
2. ".uniconvertor"ディレクトリをホームディレクトリに作る
なんかよくわかんないけど、コマンド叩くと怒られるので、作りました。
mkdir .uniconvertor
3. フォントの設定を書く
日本語のReSTファイルを変換すると文字化けして見えるのは、埋め込まれるフォントが対応していないから。ということでフォントの設定を書きます。フォントの設定等、デフォルトのスタイルは"rst2pdf --print-stylesheet"を叩くとstdoutに出力されるのでそこからファイルに落とします。
rst2pdf --print-stylesheet > rst2pdf_default.style
次に出力されたrst2pdf_default.styleの
["normal" , { "parent": "base" }],
を
["normal" , { "fontName": "IPAMonaPGothic" }],
と言うように、今使ってる標準truetypeフォントに切り替えました。標準で使っているフォント名が分かんない場合は
fc-match
ってやると出力されているフォントだとおもわれ。
4. いよいよ変換してみる。
標準でないフォントの場合、フォントの配置場所を指定する必要があります。指定しない場合は検索するためめっさ時間がかかるので、探しておいた方が幸せでしょう。今回の場合は下記のようにしたらうまく出力されました。
rst2pdf [RSTファイル名] -s rst2pdf_default.style -o [出力PDFファイル名] --font-path /usr/share/fonts/truetype/ipamona
なおrst2pdfはフィルタとしても使えるので結構ReSTで書かれている文章があれば使えるツールではないでしょうか?サンプルではこんな例が紹介されてました。
curl http://docutils.sourceforge.net/docs/user/rst/quickstart.txt | rst2pdf > quickstart.pdf