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

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

來自專欄玉樹芝蘭14 人贊了文章

需求

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

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

環境

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

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

python 3

建議使用 anaconda 軟體包。請到這個地址下載適合自己操作系統的 Python 3 版本,並且進行安裝。我曾經做了一個視頻教程,完整展示和講解了 anaconda 的安裝流程,並且介紹了如何進行相關的命令行操作。歡迎點擊這個鏈接,觀看相關的介紹說明。

pandoc

請到這個鏈接,下載最新版本的 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 與數據科學感興趣,不妨閱讀我的系列教程索引貼《如何高效入門數據科學?》,裡面還有更多的有趣問題及解法。


推薦閱讀:

markdown學習記錄(待補充)
5057段子一鍵取並保存為Markdown文檔
快速上手Markdown
Markdown快速入門

TAG:Markdown語法 | Markdown | 文檔 |