SphinxでPDF出力する方法は以下の2つがあるらしい。
- rst2pdf
- Latex
以下のページを参考にした。
SphinxでPDFファイル作成 :: ドキュメンテーションツール スフィンクス Sphinx-users.jp
今回はWindows環境で、rst2pdfを使う方法を試してみた。
環境
- Windows 7 64bit
- Python 2.6
- Sphinx1.1.3
rst2pdf設計方法
rst2pdfを手に入れる
easy_installに対応しているので、コマンドプロンプトから以下のコマンドを叩きます。
easy_install rst2pdf
そうすると、すんなりいかないでしょう。
Pythonモジュールである、PILやReportLabをインストールするところで失敗します。
PILの入手@Winodows64bit version
Windows 64bitユーザはPILを以下のサイトから手に入れます。
ReportLabの入手@Winodows64bit version
ReportLabのインストールは注意が必要です。version2.6ではなくて、2.5を入れます。
以下のサイトにありました。
- https://www.reportlab.com/ftp/
- reportlab-2.5.win-amd64-py2.6.exe
2.6を入れると以下の様なエラーが発生して、PDF作成に失敗しました。
これは、既知障害っぽいです。
https://code.google.com/p/rst2pdf/issues/detail?id=474
$ rst2pdf -s ja -font-path=C:\Windows\Fonts index.rst
Traceback (most recent call last):
File “/usr/bin/rst2pdf”, line 8, in
load_entry_point(‘rst2pdf==0.92’, ‘console_scripts’, ‘rst2pdf’)()
File “/usr/lib/python2.6/site-packages/rst2pdf-0.92-py2.6.egg/rst2pdf/createpdf.py”, line 1445, in main
section_header_depth=int(options.section_header_depth),
File “/usr/lib/python2.6/site-packages/rst2pdf-0.92-py2.6.egg/rst2pdf/createpdf.py”, line 183, in __init__
self.loadStyles(stylesheets)
File “/usr/lib/python2.6/site-packages/rst2pdf-0.92-py2.6.egg/rst2pdf/createpdf.py”, line 276, in loadStyles
def_dpi=self.def_dpi)
File “/usr/lib/python2.6/site-packages/rst2pdf-0.92-py2.6.egg/rst2pdf/styles.py”, line 527, in __init__
reportlab.platypus.tables.CellStyle1.fontname=self[‘base’].fontName
AttributeError: ‘module’ object has no attribute ‘CellStyle1’
日本語フォントのインストール
PDF出力をするためには、日本語フォントを追加する必要があります。
以下の2つをそれぞれダウンロードします。
- IPAフォント(https://sourceforge.jp/projects/ipafonts/)
- VLゴシックフォント(https://jaist.dl.sourceforge.jp/vlgothic/)
それぞれ、拡張子がttfのファイルをWindowsのフォントフォルダにコピーします。
- VL-Gothic-Regular.ttf
- VL-PGothic-Regular.ttf
- ipag.ttf
- ipam.ttf
C:\Windows\Fonts
rst2pdfがインストールできたかの確認
試しにSphinxのindex.rstをpdfに変換します。
以下のコマンドを叩いて、index.pdfが生成出来れば成功です。
rst2pdf -s ja --font-path=C:\Windows\Fonts index.rst
Sphinxの設定
各RSTファイルへの実行は成功するようになったので、全てのRSTファイルをまとめて実行できるように、Sphinxの設定ファイルをいじります。
Makefileの修正
まずは、make pdfが実行できるように、Makefileの終わりに以下を追加します。
Makefileの常識で、先頭の空白は必ずタブにします。
pdf:
$(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf
@echo
@echo "Build finished. The PDF files are in _build/pdf."
conf.pyの修正
conf.pyにrst2pdfを実行する際のオプションを設定します。
extensions = ['rst2pdf.pdfbuilder']
pdf_documents = [
('index', u'MyProject', u'My Project', u'Author Name'),
]
# A comma-separated list of custom stylesheets. Example:
pdf_stylesheets = ['sphinx','kerning','a4','ja']
import os
font_dir = os.path.abspath(os.path.join(os.path.split(__file__)[0], os.pardir, 'fonts'))
pdf_font_path = [font_dir, 'C:\WINDOWS\Fonts']
pdf_language = "ja"
フォントの指定
最後にフォントを指定するための設定ファイルを作ります。
ja.jsonという名前で、以下の内容を追記します。
{
"embeddedFonts" : [
[
"VL-Gothic-Regular.ttf",
"VL-PGothic-Regular.ttf",
"ipam.ttf",
"ipag.ttf"
]
],
"fontsAlias" : {
"stdFont": "VL-PGothic-Regular",
"stdBold": "VL-PGothic-Regular",
"stdItalic": "VL-PGothic-Regular",
"stdBoldItalic": "VL-PGothic-Regular",
"stdMono": "VL-PGothic-Regular",
"stdMonoBold": "VL-PGothic-Regular",
"stdSanBold": "VL-PGothic-Regular",
"stdSansBold": "VL-PGothic-Regular"
},
"styles" : [
["base" , {
"wordWrap": "CJK"
}],
["literal" , {
"wordWrap": "None"
}]
]
}
PDFを生成する
以下のコマンドで、_build/pdf配下にPDFが生成されます。
make pdf