需求
有個朋友提出,希望把目錄中的許多 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 與數據科學感興趣,不妨閱讀我的系列教程索引貼《如何高效入門數據科學?》,裏面還有更多的有趣問題及解法。