pandoc是一個軟件,是一個能把千奇百怪的文檔格式互相轉換的神器,是一把文檔轉換的瑞士軍刀(swiss-army knife)。很少說,放一張其官網(http://www.pandoc.org)css
下面如下載Windows下的pandoc爲例:html
pandoc-2.2-windows-x86_64.msi
下載pandoc安裝包以後,像安裝普通軟件同樣點開安裝就能夠了。安裝完成以後,打開cmd命令行,輸入pandoc -v
,若是正常顯示出相似下面的信息就代表安裝成功,若是未成功,可能須要配置環境變量,把安裝的路徑C:\Users\Frank\AppData\Local\Pandoc\加入環境變量:git
C:\Users\Administrator.PC-20170728DWIF>pandoc -v pandoc 2.2 Compiled with pandoc-types 1.17.4.2, texmath 0.10.1.2, skylighting 0.7.0.2 Default user data directory: C:\Users\Administrator.PC-20170728DWIF\AppData\Roaming\pandoc Copyright (C) 2006-2018 John MacFarlane Web: http://pandoc.org This is free software; see the source for copying conditions. There is no warranty, not even for merchantability or fitness for a particular purpose.
pandoc -s test.md -o test.docx
,命名爲md2doc.bat; 點擊md2doc.bat,閃爍cmd黑窗口,而後出現docx文件,轉換成功。github
須要轉換的md文檔與bat批處理文件放入同一文件夾下;windows
雙擊md2doc.bat
,轉換;瀏覽器
下面是使用pandoc把markdown(如下簡稱md)文件轉爲PDF所遇到的一系列的坑。ruby
下面涉及的轉換方法能夠參見pandoc的使用文檔(http://www.pandoc.org/MANUAL.html),這裏再也不敘述細節。markdown
md->HTML->PDF
的路徑轉。因而先把md轉爲HTML,HTML的樣式卻是挺美觀,而後在瀏覽器中使用瀏覽器的打印功能把HTML轉爲PDF。然而仍是存在文檔格式不能精細調整的問題。在網上搜的時候,發現有一個Python三方庫叫pypandoc
(文檔:https://pypi.org/project/pypandoc/),核心方法叫pypandoc.convert_file
,支持一大堆參數。仍是考慮到投入/產出比,我只是想安靜地轉一下md到PDF,並不想開發一個很吊的文件轉換工具,因此暫時不必去研究這個三方庫的API,之後有須要再研究吧。工具
最終轉換到另外一種思路來,依然採用迂迴戰術,不過是按照:md->docx->PDF
,一試,發現這種方式很靠譜,主要是由於:一是md轉爲docx很簡單,只需pandoc的一條命令就搞定,不須要額外裝其餘的軟件;二是轉爲docx文檔後,還能夠在其中手動精細調整字體、字號、段落之類的格式,直到本身滿意爲止。最後用Word也能夠完美地把docx轉爲PDF。字體
並且在生成的docx文檔中手工調完精細格式以後,還能夠把docx文檔的格式模板導出成dot文檔模板文件保存,後面再生成docx文檔時不須要再一個個手工調格式了,只需把這個dot模板文件中的樣式所有導入便可(怎麼導入能夠到網上搜)。
md轉爲docx文檔的pandoc命令相似於這樣: pandoc text.md -o text.docx
這種方案最爲優雅,遂採用之。
convert.bat
文件,內容以下:pandoc text.md -o text.docx && pause
convert.bat
):@echo off :: 遍歷當前文件夾下的全部後綴名爲md的文件 for /f %%a in ('dir /b *.md') do ( :: 執行pandoc命令,把每一個md文件都轉爲docx文件,docx文件的文件名爲:md文件名.md.docx pandoc %%a -o %%a.docx ) pause
假設當前文件夾下有3個md文件test1.md、test2.md、test3.md,他們的內容都爲:
# 一級標題1 ## 二級標題1 * 列表項1 * 列表項2 ## 二級標題2 正文1-1 # 一級標題2 正文2-1 # 一級標題3 表格1: 姓名|年齡|性別 ---|---|--- 張三|30|男 李四|28|男 王五|29|男
雙擊執行convert.bat
後,生成了3個docx文件:
打開test1.md.docx
,發現總體格式還不錯,而且還支持md的表格語法: