美文网首页
如何把 Markdown 文件批量转换为 pdf?

如何把 Markdown 文件批量转换为 pdf?

作者: 王树义 | 来源:发表于2018-09-12 06:13 被阅读1000次

    用十几行 Python 代码和格式转换界黑魔法 Pandoc ,迅速搞定。

    需求

    有个朋友提出,希望把目录中的许多 markdown 文件,批量转换为对应名称的 pdf 格式文件。我于是编写了一个 Python 脚本,并且分享给你。如果你有类似的需求,欢迎使用。

    由于使用了 pandoc 作为转换工具,因此 Markdown 文件里的图片链接,不论是本地存储的(只测试了绝对路径情况),还是图床上的,都可以正确转换并且显示到 pdf 文件里。

    数据

    我已经把代码和样例 Markdown 文件,都为你放在了这个 github repo 中。

    你可以直接点击这个链接,下载压缩包 demo-batch-markdown-to-pdf-master.zip

    在 macOS 上默认的下载位置,是 ~/Downloads

    下载后,解压该压缩包,咱们的演示目录就准备好了。名称是 ~/Downloads/demo-batch-markdown-to-pdf-master

    压缩包里面,有4个文件。

    其中的batch-markdown-to-pdf.py是运行脚本;

    temp_qiniu.mdREADME.md 是咱们的两个示例 Markdown 文件。你尝试之后,可以换成自己的一批 Markdown 文件。

    template.tex是转换是采用的模板,这个模板并非我做的,它来自于这个 github 项目。

    如果你对 latex 有研究,可以自行修改 template.tex 的内容,以控制输出 pdf 的样式。

    环境

    因为提出需求的朋友,使用的是 macOS 系统,因此这里我们以 macOS 系统的安装方式为准。注意下述工具实际上都是跨平台的。因此如果你使用的是 Windows 或者 Linux ,理论上也都是可以使用的。

    这个脚本在 macOS 下测试通过,欢迎你把其他平台测试的结果告诉我。

    python 3

    在 macOS 上面安装 Python 3 ,有两种方式。

    一种是安装 Anaconda 套件,另一种是使用 Homebrew 。

    我们先说 Anaconda 套件安装方式。推荐普通用户使用。它不仅包含 Python 本身,还提前为你安装好了许多常用的依赖套件。

    请到 这个网址 下载Anaconda的最新版本。

    网站会主动识别你目前使用的操作系统。确定无误后,请选择左侧的 Python 3.7 版本下载安装。

    在 macOS 环境中,你下载下来的,是一个以 pkg 为扩展名的软件安装包。双击它,根据提示一步步前进就可以了。

    安装完毕后,请打开一个终端窗口。

    方法是在“聚焦搜索”(Spotlight)中,输入 Terminal.app

    然后,回车就可以了。

    此时你会看到一个 ~ 提示符,这说明终端默认的初始位置,是用户的家目录

    咱们的演示目录位置位于 ~/Downloads/demo-batch-markdown-to-pdf-master ,所以你可以使用:

    cd Downloads/demo-batch-markdown-to-pdf-master
    

    这个命令,进入咱们的演示目录。

    当你看到前面的路径提示,已经变成了 demo-batch-markdown-to-pdf-master ,就说明你已经定位到演示目录了。

    对于高级用户,如果你觉得 Anaconda 安装了许多你不需要用到的软件包,那么也可以尝试 Homebrew 的安装方法。

    首先你需要安装 XCode。安装方法请参见这个链接

    然后,在终端窗口里面输入:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    之后,把下面这一条语句,添加到你的 ~/.profile 文件末尾:

    export PATH=/usr/local/bin:/usr/local/sbin:$PATH
    

    保存退出,新开一个窗口。

    此时 Homebrew 已经安装好了,你可以执行以下命令安装 Python 3:

    brew install python
    

    之后,同样在终端中使用以下命令进入演示目录:

    cd Downloads/demo-batch-markdown-to-pdf-master
    

    pandoc

    请到这个链接,下载符合你使用操作系统的最新版本 pandoc ,并且进行安装。

    根据我们的情况,选择的就是 pandoc-2.3.1-macOS.pkg

    下载下来的,依然是 pkg 安装包,还是双击,就可以根据提示安装了。

    tinytex

    因为需要转换的 markdown 文件,大部分都是中文文档,因此转换到 pdf 的时候,需要 xelatex 的支持。

    xelatex 可以用各种 latex 集成包来安装使用,例如 texlive 等。但是这里推荐谢益辉的 tinytex 包,简单小巧。

    不过使用之前,建议删除掉系统里面原有的 texlive 等包。否则可能会造成冲突。

    在终端窗口下,执行这个命令:

    curl -sL "https://yihui.name/gh/tinytex/tools/install-unx.sh"
    

    tinytex 就安装好了。

    之后,为了能够更好地辅助我们进行转换,需要执行下列命令,安装扩展:

    tlmgr install unicode-math filehook xecjk xltxtra realscripts fancyhdr lastpage ctex ms cjk ulem environ trimspaces zhnumber collection-fontsrecommended
    

    好了,至此准备工作结束,我们该开始执行命令了。

    运行

    再次确认,你的终端下所在位置,为 demo-batch-markdown-to-pdf-master

    执行目录查看命令:

    ls
    

    如果你看到返回的是如下信息,证明一切正常。

    下面执行:

    python batch-markdown-to-pdf.py
    

    如果顺利,你会看到程序在运行,不过没有什么输出提示的。

    因为转换 pdf 的工作需要一些时间。所以如果你的 Markdown 文件很多,可能需要等一会儿。

    请不要着急。去喝杯茶,看看书,休息一下。

    当你回来的时候,(但愿)已经转换完毕了。

    回到“访达”(Finder) ,在我们的演示目录(~/Downloads/demo-batch-markdown-to-pdf-master)下面,你会看到新生成了一个文件夹,叫做 pdf

    你的转换后 pdf 文件,应该已经在里面了。

    双击打开,看看效果:

    如果遇到问题,欢迎反馈给我。

    祝使用愉快!

    喜欢请点赞和打赏。还可以微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)

    如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《如何高效入门数据科学?》,里面还有更多的有趣问题及解法。

    相关文章

      网友评论

          本文标题:如何把 Markdown 文件批量转换为 pdf?

          本文链接:https://www.haomeiwen.com/subject/cvxmgftx.html