2009-10-09
Sphinxで日本語PDFを生成する
Sphinxには拡張モジュールの機構があり、PDF生成にrst2pdfを指定できます。
rst2pdf: http://code.google.com/p/rst2pdf/
ReportLab: http://www.reportlab.org/subversion.html
rst2pdfのtrunkにあるドキュメント(manual.txt)にSphinxについてのセクションがあります。(PDF版ではありません!)
http://code.google.com/p/rst2pdf/source/browse/trunk/doc/manual.txt
ここに記述があるようにSphinxプロジェクトのconf.pyを設定します。
conf.py
pdf_documents = [
('index', u'OutPut_FileName', u'Doc Title', u'Author Name'),
]
pdf_stylesheets = ['sphinx','kerning','a4','ja']
スタイルシートは、rst2pdfパッケージの rst2pdf/styles の中から選択して pdf_stylesheets に設定します。
日本語の文章ではwordwrapをCJKに設定すると良きに計らってくれます。
ja.jsonをSphinxプロジェクトのすぐ下に置いておけば、このスタイルシートを見つけてくれます。
ja.json
{ "styles" : [ ["base" , { "wordWrap": "CJK" }] ] }
次に、SphinxプロジェクトのMakefileにpdfターゲットを追加します。
Makefile
pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf."
ここからが苦労したのですが、rst2pdf、ReportLabともに昨日時点の最新版では動作しません。rst2pdfはrev.1059、ReportLabはrev.3511(ReportLab 2.3でOK!)で動作しました。これ以降だとエラーが出るので誰か直して。
いくつかバグがあるようなので、issueを上げておきました。 対応パッチはこちら。
rst2pdf rev.808辺りでSphinx対応機能が追加されているのですが、rev.845でymasudaさんのaafigure日本語対応パッチが入っているので、それより新しいのがお勧めです。
A book typeset using sphinx and rst2pdf
PDFファイルを生成するには、Sphinxプロジェクト配下で make pdf を実行します。 _build/pdf 配下にpdfが生成されます。
$ make pdf
これで、Sphinxドキュメントから日本語PDFが生成できます! enjoy :)

