secretbase.log

.NET/C#/Pythonなど

rst2pdf で Sphinx から PDF 出力する方法 (Windows編)

SphinxからPDFを出力する方法は 2通り あります。今回は、rst2pdfを用いた方法でやってみました。
こんな感じで出力されます。

f:id:cointoss1973:20121001211655p:plain

環境

pip をあらかじめインストールしておいてください(easy_installでもOK)
僕は、msysgit を用いました。

インストール方法

やることは下記の3点

  1. あらかじめ distutils.cfg にてコンパイラを指定しておく
  2. Windows版 PIL をインストール Python Imaging Library (PIL)
  3. pip install rst2pdf

ハマリポイントとしては、 unable to find vcvarsall.bat というエラーメッセージが出た場合の対処です。
distutils.cfg ファイルを C:\Python27\Lib\distutils 配下に下記ファイルを作成してください。distutils配下に作成した場合はシステムワイドに設定することになります。個人やローカルの範囲で準備することも可能です(詳細は、 Python モジュールのインストール — Python 2.7ja1 documentation)

[build]
compiler=mingw32

ここでは、 mingw コンパイラを指定しましたが、 Visual Studio 2008 Express Edition でも大丈夫なようです(2010ではダメ)

Sphinx にて make pdf にて pdf 生成できるようにする

  • セットアップ

msysgit(MSYS)上で make コマンドにてビルドできます。Makefile に追記します。

pdf:
       $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf
       @echo
       @echo "Build finished. The PDF file is in $(BUILDDIR)/pdf"


conf.py に下記を追加してください。
お好みでプロジェクト名など適切に変えてください。

extensions += ['sphinx.ext.autodoc', 'rst2pdf.pdfbuilder']

pdf_documents = [
    ('index', u'example', u'example ドキュメント', u'cointoss1973'),
    ]
pdf_stylesheets = ['sphinx', 'kerning', 'a4', 'ja']
pdf_font_path = ['C:\Windows\Fonts']
pdf_language = "ja"

デフォルトのフォントでは日本語が表示されないので、ja.json ファイルを新規につくります。

  • ja.json
{
  "fontsAlias" : {
     "stdFont": "meiryo",
     "stdBold": "meiryob",
     "stdItalic": "meiryo",
     "stdBoldItalic": "meiryo",
     "stdMono": "MS Gothic",
     "stdMonoBold": "MS Gothic",
     "stdMonoItalic": "MS Gothic",
     "stdMonoBoldItalic": "MS Gothic"
},
"styles" : [
  ["base", {
   "wordWrap": "CJK"
  }],
  ["literal", {
   "wordWrap": "None"
  }]
 ]
}

ビルド方法

msysgit 上で make pdf で作成できます。
_build/pdf の下に pdf ファイルが生成されます。

今回使ったプロジェクトのソースコード

下記にアップしてあります。
cointoss1973 / sphinx-example — Bitbucket