工具:Markdown-pdf
用 markdown-pdf 将 markdown 格式文件转换为 pdf 格式文件,将使转换后的 pdf 文件有极好的效果。因为它可以用 Phantomjs 来对你的文件进行渲染,指定一个 CSS 文件还可以定制你自己的风格,并且可以在转换前通过预处理函数进行预处理。
1. Node.js的安装和配置
在运用 markdown-pdf 之前需要安装 Node.js 和配置相关环境,在这里我们选择在 Windows 下安装(其实是别无选择)。对 javascript 的发展有所了解的同学可能会听说过 Node.js 。有关 Node.js 的资料网上已经可以说是铺天盖地,我们这时可以稍微奉行一下 “拿来主义” ,本文不过多介绍(不过还是可以给介绍一个流量比较多的网站 CNode:Node.js 专业中文社区 )。
Node.js 下载地址– 官网
Node.js 支持 Windows 、 Linux 和 Mac OS 。
在这里我们下载的是 Winstaller(.msi),64-bit 。
2. markdown-pdf 的安装
markdown-pdf 的 开源代码 发布在 github 。
安装 Node.js 完后,可以发现安装包里已经自带了 npm ( npm 是什么呢?)。
npm 的全称是 Node Package Manager ,是 Node.js 的包管理和分发工具(好像跟 java 中的 Maven 的功能一样的,管理各种依赖包)。Node.js 自身提供了基本的模块,但是开发
实际应用仅仅依靠这些基本模块则还需要较多的工作。幸运的是,Node.js库和框架为我们提供了帮助,让我们减少工作量。
但是成百上千的库或者框架管理起来又很麻烦,有了npm,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。
所以,我们可以用 npm 来安装 markdown-pdf 。
如果要将 markdown-pdf 作为终端的一个独立的程序,可以在 Node.js 的安装目录 (E:\Program Files\nodejs)下打开命令窗口,输入如下命令:
npm install -g markdown-pdf
安装完后,我们就可以在终端直接输入 markdown-pdf 作为命令,命令的详细信息如下:
Usage: markdown-pdf [options] <markdown-file-path>
< markdown-file-paht > 就是我们将要转换的 markdown 文件所在的路径。
Options:
-h, --help output usage information(命令用法)
-V, --version output the version number(版本信息)
< markdown-file-path > Path of the markdown file to convert(即将转换的markdown文件路径)
-c, --cwd [path] Current working directory(当前工作空间)
-p, --phantom-path [path] Path to phantom binary(phantom文件所在路径,phantom是用来渲染)
-h, --runnings-path [path] Path to runnings (header, footer)
-s, --css-path [path] Path to custom CSS file(定制私人风格的CSS文件路径)
-z, --highlight-css-path [path] Path to custom highlight-CSS file(定制私人风格的高亮CSS文件路径)
-m, --remarkable-options [json] Options to pass to Remarkable
-f, --paper-format [format] 'A3', 'A4', 'A5', 'Legal', 'Letter' or 'Tabloid'(纸张格式)
-r, --paper-orientation [orientation] 'portrait' or 'landscape'(页面规格,竖排格式或横排格式)
-b, --paper-border [measurement] Supported dimension units are: 'mm', 'cm', 'in', 'px'
-d, --render-delay [millis] Delay before rendering the PDF
-t, --load-timeout [millis] Timeout before the page is rendered in case `page.onLoadFinished` isn't fired
-o, --out [path] Path of where to save the PDF(保存PDF文件的路径)
现在我们可以验证一下,是否安装成功:
markdown-pdf -V
验证成功!我们就可以开始将我们编辑的 markdown 格式的文件转换为 pdf 啦!!!
我们可以指定 CSS 文件来定制风格,并且可以指定是 ‘A4’ 还是 ‘Letter’ 等其它格式……
值得注意的是: 当我们的文档中有中文的时候,我们要注意保存时文档的格式,格式最好调为 UTF-8 无 BOM 格式;否则可能会导致中文乱码(可以想象乱码后的心情有多糟)
3. markdown-pdf的Example Usage
git clone git@github.com:alanshaw/markdown-pdf.git
可以发现,其目录结构为:
我们可以看到有一个 test 的文件夹,里面有不少值得借鉴的用例。至于 bin 、 phantom 、 html5bp 这几个文件夹里的内容,对 Node.js 感兴趣的同学,可以研究一下它们具体的作用啦!
看了 test 文件夹里内容的同学可能会发现,这些例子并不是使用的终端的命令行呀!对的,除了在终端直接输入命令外,还有另外一种方式,那就是新建js文件,然后运行。
比如说,我们现在可以新建一个temp.js这样一个文件,如果只是简单的想把 markdown 文件转换为 pdf 文件,可以再文件了写下如下代码:
1 | var markdownpdf = require("markdown-pdf") |
然后打开终端,输入命令:
node temp.js
我们发现同样是可以转换成功。当然,往往我们的需求不会那么简单,为了突出我们的个性,我们会需要更多的“私人订制”,那么我们可以加上 options .
比如说我们可能需要转换后的 pdf 是 ‘A4’ 格式,横排排版,有 remarkable 等等……那就需要加上options:
1 | var markdownpdf = require("markdown-pdf") |
在这里我们需要注意的是 options需要为json格式 。
那么 remarkable 又是什么呢?remarkable是一个markdown的解析器,官网是这样说的:
Markdown parser, done right. 100% Commonmark support, extensions, syntax plugins, high speed - all in one.
翻译成一句就是,“我很牛,我很强大”。有兴趣的同学可以继续深入了解一下。
有时,我们可能会需要将多个markdown文件转换为一个pdf文件:
1 | var markdownpdf = require("markdown-pdf") |
同样,我们可以定义一个预处理函数 preProcessMd ,然后配置在options,在转换前进行预处理;markdown-pdf还有很多功能。我也是边学边用,如果想对markdown-pdf这个工具想有更深入的了解,可以在 官网 获得更多,更详细的信息。