如何把 Markdown 檔案批量轉換為 pdf?

需求
有個朋友提出,希望把目錄中的許多 markdown 檔案,批量轉換為對應名稱的 pdf 格式檔案。我於是編寫了一個 Python 指令碼,並且分享給你。如果你有類似的需求,歡迎使用。
由於使用了 pandoc 作為轉換工具,因此 Markdown 檔案裡的圖片連結,不論是本地儲存的(只測試了絕對路徑情況),還是圖床上的,都可以正確轉換並且顯示到 pdf 檔案裡。
環境
因為提出需求的朋友,使用的是 macOS 系統,因此這裡我們以 macOS 系統的安裝方式為準。注意下述工具實際上都是 跨平臺 的。因此如果你使用的是 Windows 或者 Linux ,理論上也都是可以使用的。
這個指令碼在 macOS 下測試通過,歡迎你把其他平臺測試的結果告訴我。
python 3
建議使用 anaconda 軟體包。請到這個地址下載適合自己作業系統的 Python 3 版本,並且進行安裝。我曾經做了一個視訊教程,完整展示和講解了 anaconda 的安裝流程,並且介紹瞭如何進行相關的命令列操作。歡迎點選這個連結,觀看相關的介紹說明。
pandoc
請到 ofollow,noindex">這個連結 ,下載最新版本的 pandoc 並且進行安裝。
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
程式碼
請到 這個 github repo 下載執行程式碼。或者直接點選 這個連結 ,下載壓縮包並且解壓。
壓縮包裡面,有兩個檔案。
其中的 batch-markdown-to-pdf.py
是執行指令碼, template.tex
是轉換是採用的模板,這個模板並非我做的,它來自於 這個 github 專案。
如果你對 latex 有研究,可以自行修改 template.tex
的內容,以控制輸出 pdf 的樣式。
準備
請把要轉換的全部 markdown 檔案( 需要用".md"結尾 ),都放在同一個目錄中。
注意我的樣例目錄,使用的是 macOS 的下載資料夾下面的“測試目錄”,路徑如下:
"~/Downloads/測試目錄/"
你的目錄,大概會與此不同,所以請你在使用之前,先開啟 batch-markdown-to-pdf.py
,並且把其中第一行的路徑,替換成自己電腦上的目錄名稱。
執行
執行起來,就很簡單了。
進入終端,通過 cd
命令轉換到解壓後的程式碼所在目錄。如果你對 cd
命令不是很清楚,請回顧剛才我提到的視訊教程 。
之後,執行:
python batch-markdown-to-pdf.py
如果一切正常,你會看到程式在執行,不過沒有什麼輸出提示的。
因為轉換 pdf 的工作需要一些時間。所以如果你的 Markdown 檔案很多,可能需要等一會兒。
請不要著急。去喝杯茶,看看書,休息一下。
當你回來的時候,(但願)已經轉換完畢了。
你會看到,在原先的 markdown 檔案所在目錄下面,生成了一個新的資料夾,叫做 pdf
。
你的轉換後 pdf 檔案,應該已經在裡面了。

如果遇到問題,歡迎反饋給我。
祝使用愉快!
喜歡請點贊和打賞。還可以微信關注和置頂我的公眾號 “玉樹芝蘭”(nkwangshuyi) 。
如果你對 Python 與資料科學感興趣,不妨閱讀我的系列教程索引貼《 如何高效入門資料科學? 》,裡面還有更多的有趣問題及解法。