如何把 Markdown 文件批量轉換為 pdf?

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

需求

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

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

數(shù)據(jù)

我已經(jīng)把代碼和樣例 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 的樣式。

環(huán)境

因為提出需求的朋友,使用的是 macOS 系統(tǒng),因此這里我們以 macOS 系統(tǒng)的安裝方式為準。注意下述工具實際上都是跨平臺的。因此如果你使用的是 Windows 或者 Linux ,理論上也都是可以使用的。

這個腳本在 macOS 下測試通過,歡迎你把其他平臺測試的結果告訴我。

python 3

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

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

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

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

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

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

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

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

然后,回車就可以了。

此時你會看到一個 ~ 提示符,這說明終端默認的初始位置,是用戶的家目錄。

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

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

這個命令,進入咱們的演示目錄。

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

對于高級用戶,如果你覺得 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 已經(jīng)安裝好了,你可以執(zhí)行以下命令安裝 Python 3:

brew install python

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

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

pandoc

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

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

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

tinytex

因為需要轉換的 markdown 文件,大部分都是中文文檔,因此轉換到 pdf 的時候,需要 xelatex 的支持。

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

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

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

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

tinytex 就安裝好了。

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

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

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

運行

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

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

ls

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

下面執(zhí)行:

python batch-markdown-to-pdf.py

如果順利,你會看到程序在運行,不過沒有什么輸出提示的。

因為轉換 pdf 的工作需要一些時間。所以如果你的 Markdown 文件很多,可能需要等一會兒。

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

當你回來的時候,(但愿)已經(jīng)轉換完畢了。

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

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

雙擊打開,看看效果:

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

祝使用愉快!

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

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

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

友情鏈接更多精彩內容