日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

markdown文本轉(zhuǎn)換word,pdf

 一本正經(jīng)地胡鬧 2019-08-16

pandoc及下載和安裝

pandoc是什么

pandoc是一個(gè)軟件,是一個(gè)能把千奇百怪的文檔格式互相轉(zhuǎn)換的神器,是一把文檔轉(zhuǎn)換的瑞士軍刀(swiss-army knife)。不多說(shuō),放一張其官網(wǎng)(http://www.)的圖,一圖勝千言,感受一下:

image.png

下載pandoc

下面以下載Windows下的pandoc為例:

安裝pandoc

下載pandoc安裝包之后,像安裝普通軟件一樣點(diǎn)開安裝就可以了。安裝完成之后,打開cmd命令行,輸入pandoc -v,如果正常顯示出類似下面的信息就表明安裝成功,如果未成功,可能需要配置環(huán)境變量,把安裝的路徑C:\Users\Frank\AppData\Local\Pandoc\加入環(huán)境變量:

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

Web:  http://
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.
  • 配置bat批處理文件:
    創(chuàng)建文本文件,寫入一行代碼pandoc -s test.md -o test.docx,命名為md2doc.bat;
    此批處理文件將調(diào)用pandoc將test.md轉(zhuǎn)換為test.docx;

  • 將需要轉(zhuǎn)換的md文件與bat文件放在同一文件夾下;

  • 點(diǎn)擊md2doc.bat,閃爍cmd黑窗口,然后出現(xiàn)docx文件,轉(zhuǎn)換成功。

  • 需要轉(zhuǎn)換的md文檔與bat批處理文件放入同一文件夾下;

  • 雙擊md2doc.bat,轉(zhuǎn)換;

走過(guò)的一些路,趟過(guò)的一些坑

下面是使用pandoc把markdown(以下簡(jiǎn)稱md)文件轉(zhuǎn)為PDF所遇到的一系列的坑。

嘗試過(guò)的不合適的方案

下面涉及的轉(zhuǎn)換方法可以參見pandoc的使用文檔(http://www./MANUAL.html),這里不再敘述細(xì)節(jié)。

  • 直接使用pandoc把md轉(zhuǎn)為PDF。問(wèn)題:報(bào)錯(cuò),原因是電腦沒(méi)有安裝Latex解析引擎。

  • 裝好了MiKTex這樣一個(gè)Latex解析引擎之后,再轉(zhuǎn),又失敗了,原因是不支持中文字體(md文件中有中文字體)。

  • 指定字體為宋體后再轉(zhuǎn),雖然成功轉(zhuǎn)為了PDF文件,但是文件的字體、行間距、排版等樣式都比較丑陋,不滿意。

  • 在網(wǎng)上又搜了搜,再加上指定Latex模板文件轉(zhuǎn),雖然能夠調(diào)整一些參數(shù)了,但一方面模板文件猶如天書般難懂,另一方面很多格式還是不能精細(xì)調(diào)整。

  • 變換一下思路,采取迂回戰(zhàn)術(shù),按照md->HTML->PDF的路徑轉(zhuǎn)。于是先把md轉(zhuǎn)為HTML,HTML的樣式倒是挺美觀,然后在瀏覽器中使用瀏覽器的打印功能把HTML轉(zhuǎn)為PDF。然而還是存在文檔格式不能精細(xì)調(diào)整的問(wèn)題。

  • 發(fā)現(xiàn)轉(zhuǎn)HTML的時(shí)候可以指定css樣式文件,在css樣式文件中可以配置標(biāo)題、正文、段落的精細(xì)格式。奈何這種方法和Latex模板文件的缺點(diǎn)類似,投入/產(chǎn)出比過(guò)高,遂放棄。

一個(gè)不太合適的方案

在網(wǎng)上搜的時(shí)候,發(fā)現(xiàn)有一個(gè)Python三方庫(kù)叫pypandoc(文檔:https:///project/pypandoc/),核心方法叫pypandoc.convert_file,支持一大堆參數(shù)。還是考慮到投入/產(chǎn)出比,我只是想安靜地轉(zhuǎn)一下md到PDF,并不想開發(fā)一個(gè)很吊的文件轉(zhuǎn)換工具,所以暫時(shí)沒(méi)必要去研究這個(gè)三方庫(kù)的API,以后有需要再研究吧。

最終采取的解決方案

最終轉(zhuǎn)換到另一種思路來(lái),依然采用迂回戰(zhàn)術(shù),不過(guò)是按照:md->docx->PDF,一試,發(fā)現(xiàn)這種方式很靠譜,主要是因?yàn)椋阂皇莔d轉(zhuǎn)為docx很簡(jiǎn)單,只需pandoc的一條命令就搞定,不需要額外裝其他的軟件;二是轉(zhuǎn)為docx文檔后,還可以在其中手動(dòng)精細(xì)調(diào)整字體、字號(hào)、段落之類的格式,直到自己滿意為止。最后用Word也可以完美地把docx轉(zhuǎn)為PDF。

而且在生成的docx文檔中手工調(diào)完精細(xì)格式之后,還可以把docx文檔的格式模板導(dǎo)出成dot文檔模板文件保存,后面再生成docx文檔時(shí)不需要再一個(gè)個(gè)手工調(diào)格式了,只需把這個(gè)dot模板文件中的樣式全部導(dǎo)入即可(怎么導(dǎo)入可以到網(wǎng)上搜)。

md轉(zhuǎn)為docx文檔的pandoc命令類似于這樣:
pandoc text.md -o text.docx

這種方案最為優(yōu)雅,遂采用之。

腳本封裝,支持批量轉(zhuǎn)換

  • 把轉(zhuǎn)換命令封裝成bat批處理腳本,以后再進(jìn)行轉(zhuǎn)換的時(shí)候只需簡(jiǎn)單雙擊一下bat腳本即可,比如封裝成convert.bat文件,內(nèi)容如下:

pandoc text.md -o text.docx && pause
  • 批量處理:假如幾十上百個(gè)md文件要批量轉(zhuǎn)為docx文件,難道要手工一個(gè)個(gè)復(fù)制這些文件名和pandoc命令去轉(zhuǎn)換嗎?完全不需要,一個(gè)bat腳本搞定(convert.bat):

@echo off
:: 遍歷當(dāng)前文件夾下的所有后綴名為md的文件
for /f %%a in ('dir /b *.md') do (
    :: 執(zhí)行pandoc命令,把每個(gè)md文件都轉(zhuǎn)為docx文件,docx文件的文件名為:md文件名.md.docx
    pandoc %%a -o %%a.docx
)
pause

假設(shè)當(dāng)前文件夾下有3個(gè)md文件test1.md、test2.md、test3.md,他們的內(nèi)容都為:

# 一級(jí)標(biāo)題1
## 二級(jí)標(biāo)題1
* 列表項(xiàng)1
* 列表項(xiàng)2

## 二級(jí)標(biāo)題2
正文1-1

# 一級(jí)標(biāo)題2
正文2-1

# 一級(jí)標(biāo)題3
表格1:

姓名|年齡|性別
---|---|---
張三|30|男
李四|28|男
王五|29|男

雙擊執(zhí)行convert.bat后,生成了3個(gè)docx文件:

image.png

打開test1.md.docx,發(fā)現(xiàn)整體格式還不錯(cuò),并且還支持md的表格語(yǔ)法:

image.png

小結(jié)

  • pypandoc庫(kù)以后有需要了可以進(jìn)一步研究一下。

  • 在決定采取一種方案解決問(wèn)題之前,首先要考慮投入/產(chǎn)出比,是否值得采用這種方案。

參考:https://www.jianshu.com/p/52cbee87a45a

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多