Contents

rst2pdf 中文

上篇说到用pandoc转换为reST为pdf是使用LaTeX作为中间格式的,而今天要说的rst2pdf貌似是直接转换为pdf的。

安装和调用

rst2pdf目前只支持Python2.7,因此在创建virtualenv时应使用-p选项指定2.7的python,即

mkvirtualenv -p /path/to/python2.7 rst

workon rst

pip install rst2pdf

最简单的调用方式是

rst2pdf xxx.rst

然后默认就会生成xxx.pdf文件,当然中文这要是不好使的,因为默认样式是不支持中文字体的,生成的pdf里,中文都是黑块。

中文样式

rst2pdf有一些默认的样式,base、bodytext等等,我们还可以自己新增样式,也可以修改默认的一些样式的选项。对样式的选项修改类似于css,后面的样式选项可以覆盖前面的样式选项,所以我们一般不会去直接修改默认样式,而是在我们自己的样式文件中,覆盖默认的选项,在生成pdf的时候,可以一次性指定多个样式,后面的会覆盖前面的。

对于中文来说,我们就差一个字体的样式了,具体来说就是把下面的代码存储成 chinese.style

{

 "embeddedFonts": [

 [

 "simfang.ttf",

 "simhei.ttf",

 "simkai.ttf",

 "simsun.ttc"

 ]

 ],

 "fontsAlias": {

 "stdFont": "simfang",

 "stdBold": "simhei",

 "stdItalic": "simkai"

 }

}

注:有关字体的配置参见官方文档,这个配置对Linux和Windows应该都是好使的,前提是这些字体文件是真实存在的。Linux字体文件在 /usr/share/fonts 和 ~/.local/share/fonts 文件夹中。

此时,运行以下命令, 中文就可以显示出来了

rst2pdf -s chinese.style xxx.rst

 

配置文件

如果样式需要每次都指定,对于中文来说就有点不方便,rst2pdf支持一个配置文件,可以使用 –config 的方式传递配置文件路径,默认的配置文件路径是 ~/.rst2pdf/config

以下是官方方式给的配置文件示例+我改了stylesheets,stylesheet_path,language

# This is an example config file. Modify and place in ~/.rst2pdf/config



[general]

# A comma-separated list of custom stylesheets. Example:

# stylesheets="fruity.json,a4paper.json,verasans.json"



stylesheets="chinese"



# Create a compressed PDF

# Use true/false (lower case) or 1/0

compressed=false



# A colon-separated list of folders to search for fonts. Example:

# font\_path="/usr/share/fonts:/usr/share/texmf-dist/fonts/"



font\_path=""



# A colon-separated list of folders to search for stylesheets. Example:

# stylesheet\_path="~/styles:/usr/share/styles"

stylesheet\_path="~/.rst2pdf/styles"



# Language to be used for hyphenation support



language="zh_CN"



# Default page header and footer

header=null

footer=null



# What to do if a literal block is too large. Can be

# shrink/truncate/overflow



fit\_mode="shrink"



# How to adjust the background image to the page.

# Can be: "scale" and "center"



fit\_background\_mode="center"



# What is the maximum level of heading that starts in a new page.

# 0 means no level starts in a new page.



break\_level=0



# How section breaks work. Can be "even", and sections start in an

# even page, "odd", and sections start in odd pages, or "any" and

# sections start in the next page, be it even or odd.



break\_side="any"



# Add a blank page at the beginning of the document



blank\_first\_page=false



# Treat the first page as even (default false, treat it as odd)



first\_page\_even=false



# Smart quotes.

# 0: Suppress all transformations. (Do nothing.)

# 1: Performs default SmartyPants transformations: quotes (including ‘‘backticks''

# -style), em-dashes, and ellipses. "--" (dash dash) is used to signify an em-dash;

# there is no support for en-dashes.

# 2:  Same as 1, except that it uses the old-school typewriter shorthand for

# dashes: "--" (dash dash) for en-dashes, "---" (dash dash dash) for em-dashes.

# 3: Same as 2, but inverts the shorthand for dashes: "--" (dash dash) for

# em-dashes,  and "---" (dash dash dash) for en-dashes.



smartquotes=0



# Footnote backlinks enabled or not (default: enabled)



footnote\_backlinks=true



# Show footnotes inline instead of at the end of the document



inline\_footnotes=false



# Cover page template.

# It will be searched in the document's folder, in ~/.rst2pdf/templates and

# in the templates subfolder of the package folder



# custom\_cover = cover.tmpl



# Use floating images.

# Makes the behaviour of images with the :align: attribute more like rst2html's



floating\_images = false



# Support the ..raw:: html directive

raw\_html = false

 使用以上的配置文件,我们需要将刚刚的 chinese.style 放到 ~/.rst2pdf/styles/ 文件夹中,以后再生成pdf的时候,就可以简单的使用和英文相同的方式了

rst2pdf xxx.rst

 默认设置下,rst2pdf的效果貌似要比pandoc的要好,以后不太要求的文档就用这个好了,长篇文档,估计还得使用sphinx

参考

官方文档:http://rst2pdf.ralsina.me/handbook.html

某博客: http://blog.163.com/ar_cn/blog/static/14538308520104102716573/