如何把 Markdown 文件批量轉(zhuǎn)換為 pdf?

用十幾行 Python 代碼和格式轉(zhuǎn)換界黑魔法 Pandoc ,迅速搞定。

需求

有個(gè)朋友提出,希望把目錄中的許多 markdown 文件,批量轉(zhuǎn)換為對(duì)應(yīng)名稱的 pdf 格式文件。我于是編寫了一個(gè) Python 腳本,并且分享給你。如果你有類似的需求,歡迎使用。

由于使用了 pandoc 作為轉(zhuǎn)換工具,因此 Markdown 文件里的圖片鏈接,不論是本地存儲(chǔ)的(只測試了絕對(duì)路徑情況),還是圖床上的,都可以正確轉(zhuǎn)換并且顯示到 pdf 文件里。

數(shù)據(jù)

我已經(jīng)把代碼和樣例 Markdown 文件,都為你放在了這個(gè) github repo 中。

你可以直接點(diǎn)擊這個(gè)鏈接,下載壓縮包 demo-batch-markdown-to-pdf-master.zip。

在 macOS 上默認(rèn)的下載位置,是 ~/Downloads。

下載后,解壓該壓縮包,咱們的演示目錄就準(zhǔn)備好了。名稱是 ~/Downloads/demo-batch-markdown-to-pdf-master 。

壓縮包里面,有4個(gè)文件。

其中的batch-markdown-to-pdf.py是運(yùn)行腳本;

temp_qiniu.mdREADME.md 是咱們的兩個(gè)示例 Markdown 文件。你嘗試之后,可以換成自己的一批 Markdown 文件。

template.tex是轉(zhuǎn)換是采用的模板,這個(gè)模板并非我做的,它來自于這個(gè) github 項(xiàng)目。

如果你對(duì) latex 有研究,可以自行修改 template.tex 的內(nèi)容,以控制輸出 pdf 的樣式。

環(huán)境

因?yàn)樘岢鲂枨蟮呐笥?,使用的?macOS 系統(tǒng),因此這里我們以 macOS 系統(tǒng)的安裝方式為準(zhǔn)。注意下述工具實(shí)際上都是跨平臺(tái)的。因此如果你使用的是 Windows 或者 Linux ,理論上也都是可以使用的。

這個(gè)腳本在 macOS 下測試通過,歡迎你把其他平臺(tái)測試的結(jié)果告訴我。

python 3

在 macOS 上面安裝 Python 3 ,有兩種方式。

一種是安裝 Anaconda 套件,另一種是使用 Homebrew 。

我們先說 Anaconda 套件安裝方式。推薦普通用戶使用。它不僅包含 Python 本身,還提前為你安裝好了許多常用的依賴套件。

請到 這個(gè)網(wǎng)址 下載Anaconda的最新版本。

網(wǎng)站會(huì)主動(dòng)識(shí)別你目前使用的操作系統(tǒng)。確定無誤后,請選擇左側(cè)的 Python 3.7 版本下載安裝。

在 macOS 環(huán)境中,你下載下來的,是一個(gè)以 pkg 為擴(kuò)展名的軟件安裝包。雙擊它,根據(jù)提示一步步前進(jìn)就可以了。

安裝完畢后,請打開一個(gè)終端窗口。

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

然后,回車就可以了。

此時(shí)你會(huì)看到一個(gè) ~ 提示符,這說明終端默認(rèn)的初始位置,是用戶的家目錄。

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

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

這個(gè)命令,進(jìn)入咱們的演示目錄。

當(dāng)你看到前面的路徑提示,已經(jīng)變成了 demo-batch-markdown-to-pdf-master ,就說明你已經(jīng)定位到演示目錄了。

對(duì)于高級(jí)用戶,如果你覺得 Anaconda 安裝了許多你不需要用到的軟件包,那么也可以嘗試 Homebrew 的安裝方法。

首先你需要安裝 XCode。安裝方法請參見這個(gè)鏈接

然后,在終端窗口里面輸入:

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

之后,把下面這一條語句,添加到你的 ~/.profile 文件末尾:

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

保存退出,新開一個(gè)窗口。

此時(shí) Homebrew 已經(jīng)安裝好了,你可以執(zhí)行以下命令安裝 Python 3:

brew install python

之后,同樣在終端中使用以下命令進(jìn)入演示目錄:

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

pandoc

請到這個(gè)鏈接,下載符合你使用操作系統(tǒng)的最新版本 pandoc ,并且進(jìn)行安裝。

根據(jù)我們的情況,選擇的就是 pandoc-2.3.1-macOS.pkg 。

下載下來的,依然是 pkg 安裝包,還是雙擊,就可以根據(jù)提示安裝了。

tinytex

因?yàn)樾枰D(zhuǎn)換的 markdown 文件,大部分都是中文文檔,因此轉(zhuǎn)換到 pdf 的時(shí)候,需要 xelatex 的支持。

xelatex 可以用各種 latex 集成包來安裝使用,例如 texlive 等。但是這里推薦謝益輝的 tinytex 包,簡單小巧。

不過使用之前,建議刪除掉系統(tǒng)里面原有的 texlive 等包。否則可能會(huì)造成沖突。

在終端窗口下,執(zhí)行這個(gè)命令:

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

tinytex 就安裝好了。

之后,為了能夠更好地輔助我們進(jìn)行轉(zhuǎn)換,需要執(zhí)行下列命令,安裝擴(kuò)展:

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

好了,至此準(zhǔn)備工作結(jié)束,我們該開始執(zhí)行命令了。

運(yùn)行

再次確認(rèn),你的終端下所在位置,為 demo-batch-markdown-to-pdf-master 。

執(zhí)行目錄查看命令:

ls

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

下面執(zhí)行:

python batch-markdown-to-pdf.py

如果順利,你會(huì)看到程序在運(yùn)行,不過沒有什么輸出提示的。

因?yàn)檗D(zhuǎn)換 pdf 的工作需要一些時(shí)間。所以如果你的 Markdown 文件很多,可能需要等一會(huì)兒。

請不要著急。去喝杯茶,看看書,休息一下。

當(dāng)你回來的時(shí)候,(但愿)已經(jīng)轉(zhuǎn)換完畢了。

回到“訪達(dá)”(Finder) ,在我們的演示目錄(~/Downloads/demo-batch-markdown-to-pdf-master)下面,你會(huì)看到新生成了一個(gè)文件夾,叫做 pdf 。

你的轉(zhuǎn)換后 pdf 文件,應(yīng)該已經(jīng)在里面了。

雙擊打開,看看效果:

如果遇到問題,歡迎反饋給我。

祝使用愉快!

喜歡請點(diǎn)贊和打賞。還可以微信關(guān)注和置頂我的公眾號(hào)“玉樹芝蘭”(nkwangshuyi)。

如果你對(duì) Python 與數(shù)據(jù)科學(xué)感興趣,不妨閱讀我的系列教程索引貼《如何高效入門數(shù)據(jù)科學(xué)?》,里面還有更多的有趣問題及解法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容