GitBook输出为PDF

在github上有许多的文档,里面大部分是md格式,虽然可以用markdown编辑器来看,但是总感觉有点不方便,所以就想到有没有一个方法将md文档全部合并成一个PDF文件。

然后通过Google发现可以使用gitbook合并成一个PDF。
而要合成则必须是按照Gitbook的格式写的,简单来说就是有 SUMMARY.md

本机环境为Windows8.1 64bit

基础环境搭建

Node安装

Node.js官网下载,根据自己的操作系统选择具体的安装包。

GitBook安装

GitBook 是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书。通过Node.js命令安装GitBook

全局安装Gitbook

1
npm install gitbook-cli -g

图书输出

输出为静态网站

有两种方法输出一个静态网站

本地预览时自动生成

1
gitbook serve ./图书目录

这里会启动一个4000的端口用于预览服务器

1
2
3
4
5
6
7
8
9
E:> gitbook serve .
Press CTRL+C to quit ...

Starting build ...
Successfuly built !

Starting server ...
Serving book on http://localhost:4000


在浏览器打开这个网址就行http://localhost:4000

使用build参数生成

与直接预览生成的静态网站文件不一样的是,使用这个命令,你可以将内容输入到你所想要的目录中去,步骤如下:

1
2
gitbook build . ./outbook

完成后就会在outbook目录下生成了同样的静态html文件

输出为PDF

安装calibre

由于生成PDF文件依赖于ebook-convert,故首先在calibre官网下载所需要的版本安装

然后,进入到文档目录,用下面的命令就可以生成PDF文件了

1
gitbook pdf 

错误解决

ERR cb() never called

这个错误是在第一步安装gitbook-cli时出现的,解决方法如下

1
npm cache clean --force

Error: ENOENT: no such file or directory

这个错误是在构建时出现的,解决方法就是把copyPluginAssets.js里的confirm: true改为confirm: false

这个文件具体在C:/User/{username}/.gitbook/versions/{version}/lib/output/website/copyPluginAssets.js

使用编辑器搜索修改即可

Error: Error with command “svgexport”

这个错误出现在构建时,假如文档里有svg图片,则会出现这个错误,具体解决方法如下

1
npm install svgexport -g

Template render error

这个错误是出现在生成pdf文件时,通常是文中有{{`和`}},并且这两个符号没有被代码块包括,解析就会出问题。

解决办法:

方法一:

1
2
3
{% raw %}
含有双大括号的内容
{% endraw %}

改正之后就是

1
2
3
4
{% raw %}
{{ input }}
{% endraw %}

方法二:

直接把原文变为代码块

比如原文是{{ input }}

修改之后就是

1
`{{ input }}`