【mdout】我開源了一款Markdown轉(zhuǎn)Pdf命令行工具(一)獲取安裝、使用說明

以下文檔來自 JabinGP/mdout,如果覺得對你有幫助,不妨點個star鼓勵一下~

mdout

一個Go語言實現(xiàn)的Markdown轉(zhuǎn)PDF命令行工具,基于headless chrome,簡單、可靠、易安裝、可定制化、易拓展

mdout有何特點

簡單

mdout會根據(jù)后綴,自動識別輸入類型

mdout markdown.md
mdout local_html.html
mdout http://www.baidu.com

可靠

mdout可以完整保留你md文件里的代碼格式,圖片,甚至是數(shù)學公式,支持代碼格式語法高亮

電腦不會如人一般等待頁面加載完全再選擇打印,電腦自動執(zhí)行打印時頁面尚未渲染完全是件非常頭疼的事情,對此,mdout沒有簡單地使用sleep休眠機制去碰運氣,而是實現(xiàn)了一套非常簡單的同步渲染機制,即便是你有1萬行的mathjax數(shù)學公式、1萬行的代碼語法高亮要渲染,mdout都能完美的保證你的pdf上不會有任何一個未渲染完成的元素

易安裝

除了chrome,mdout不依賴于其他任何環(huán)境,你只需要選擇對于系統(tǒng)的安裝包,下載并解壓即可使用,更為macOS和linux提供了一鍵安裝腳本,為windows提供了豐富的圖文教程

可定制化

mdout將每個模板獨立為主題,并且支持指定輸出html文件,可以很方便地自定義頁面配色,自定義語法高亮配色

易拓展

mdout基于headless chrome,這使得mdout幾乎兼容市面上所有能用于的前端組件,并且mdout將組件歸類為主題的一部分,你同樣可以輸出html來調(diào)試自己的自定義拓展插件

獲取和安裝

由于Github下載速度實在是太過寒酸,只有30KB/s,以下的鏈接全部來自于阿里云服務(wù)器,盡管服務(wù)器有帶寬限制,但是應(yīng)對這個大小的文件還是沒問題的

mdout同時支持windows,linux,macOS,但目前只支持64位的系統(tǒng)

mdout已經(jīng)為各平臺打包了可執(zhí)行文件,因此無論何種方式安裝,無非就是下載可執(zhí)行文件壓縮包后解壓縮,解壓完就可以在mdout所在文件夾使用mdout了

但是為了命令行使用方便,我更推薦將mdout配置到系統(tǒng)的環(huán)境變量中,這樣隨時隨地隨心所欲mdout

適用于老鳥的安裝方式

稍微懂點命令行的使用以下命令即可輕松安裝

  • linux

    wget http://112.74.177.253:8000/f/edcb3b9e460d4d18ab3f/?dl=1
    tar -xvzf mdout.macOS.x86-64.tar.gz
    sudo mv mdout /usr/local/bin
    mdout install
    
  • macOS

    wget http://112.74.177.253:8000/f/100873c74622474da4d9/?dl=1
    tar -xvzf mdout.linux.x86-64.tar.gz
    mv mdout /usr/local/bin
    mdout install
    

腳本安裝

非常感謝Fisher的腳本支持! 自己日用的腳本

linux && macOS推薦使用腳本安裝

  • curl方式

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/FisherWY/Shell/master/mdout/install_mdout.sh)"
    
  • wget方式

    bash -c "$(wget https://raw.githubusercontent.com/FisherWY/Shell/master/mdout/install_mdout.sh -O -)"
    

手動安裝

點擊前文給出的各版本鏈接,下載成功后解壓縮,你會得到一個mdout可執(zhí)行文件

windows

  1. 點擊下載

    下載后使用zip工具解壓縮,解壓后會得到一個mdout.exe可執(zhí)行文件

  2. 放置軟件

    mdout.exe可執(zhí)行文件放置平時放軟件的地方,比如D:\mdout這個文件夾里面,此時你的mdout.exe的全路徑應(yīng)該是D:\mdout\mdout.exe

  3. 設(shè)置環(huán)境變量

    如果不設(shè)置環(huán)境變量也可以使用,但是缺點是你需要使用cmd,powershell或者gitbash手動進入D:\mdout才能使用mdout命令

    確定路徑


    1.jpg

設(shè)置環(huán)境變量,右鍵我的電腦 -> 選擇屬性 -> 左邊的高級系統(tǒng)設(shè)置

2.jpg

選擇高級 -> 點擊環(huán)境變量

3.jpg

找到下半部分的系統(tǒng)變量,雙擊Path

4.jpg

在彈出來的窗口選擇新建

5.jpg

填入D:\mdout,然后一定要連續(xù)點完三個確定

6.jpg
  1. 檢驗

    打開cmd,或者powershell,或者你有g(shù)itbash都ok(推薦使用命令行的windows用戶都裝一個gitbash),輸入mdout,看到如下輸出就是成功了

7.jpg

linux

  1. 下載linux版本

    點擊下載

    下載完成后解壓tar.gz包,解壓后會得到一個mdout可執(zhí)行文件

  2. 將軟件放入可執(zhí)行文件庫

    打開終端,定位到剛剛下載的文件所在路徑

    cd 你的文件所在文件夾
    

    然后將可執(zhí)行文件直接移動到/usr/local/bin,linux環(huán)境下需要sudo權(quán)限

    sudo mv ./mdout /usr/local/bin
    

    輸入密碼就可以了

  3. 檢驗是否成功

    輸入mdout --version,看到版本號輸出就是成功了

macOS

  1. 下載macOS版本

    點擊下載

    下載后使用工具解壓tar.gz包,解壓后會得到一個mdout可執(zhí)行文件

  2. 將軟件移動到可執(zhí)行文件庫

    打開終端,定位到剛剛下載的文件所在路徑

    cd 你的mdout可執(zhí)行文件所在文件夾
    

    然后將可執(zhí)行文件直接移動到/usr/local/bin

    mv ./mdout /usr/local/bin
    
  3. 檢驗是否成功移動

    輸入mdout --version,看到版本號輸出就是成功了

使用說明

使用前提

mdout依賴于chrome瀏覽器,如果你的電腦已經(jīng)安裝了新版的chrome瀏覽器,無需更多配置,可以直接運行mdout,如果是舊版的chrome瀏覽器,建議進行升級后使用,如果還未安裝chrome瀏覽器,請安裝后再使用mdout

進行系統(tǒng)初始化

如果你不是使用腳本安裝的,或者腳本安裝不完全成功的,需要手動執(zhí)行初始化,如果腳本安裝成功,則跳過這一步

mdout依賴于html、css、js的模板,但是模板沒有打包進程序,這是出于自定義化的考慮,執(zhí)行初始化命令,程序會自動下載需要的文件到配置文件路徑,至于這個路徑在哪,在后面會提到,同時初始化程序執(zhí)行結(jié)束后也會輸出這個路徑,請記住這個路徑,在一些自定義和設(shè)置默認值時會使用到

mdout install

最簡單的示例

mdout 文件路徑

文件路徑可以是相對路徑

  • 文件在當前目錄

    mdout yourfile.md
    
  • 或文件在上級目錄

    mdout ../yourfile.md
    
  • 文件路徑也可以是絕對路徑

    mdout /tmp/markdown/yourfile.md
    

幫助文檔

每個命令行程序都有幫助文檔,mdout也不例外

mdout -h
mdout --help

輸入文件類型

mdout支持許多輸入類型,其中最普遍的就是markdown,但同樣也支持html輸入,url輸入,但是注意,如果輸入是url,不要忘記帶上http:://

  • markdown

    mdout yourfile.md
    
  • html

    mdout yourfile.html
    
  • url

    mdout http://www.baidu.com
    

輸出文件類型

對于markdown輸入,mdout支持輸出中間過程的結(jié)果。但對于html輸入或者url輸入,它們的唯一輸出結(jié)果就是pdf文件了

  • markdown輸出pdf(輸出pdf為默認選項)

    mdout youtfile.md -t pdf  
    mdout yourfile.md
    
  • markdown輸出解析后html標簽(這個選項可以得到markdown解析器的解析結(jié)果)

    mdout youtfile.md -t tag
    
  • markdown輸出經(jīng)過處理后的完整html文件(常常用來調(diào)試主題)

    mdout youtfile.md -t html
    

輸出路徑

mdout支持指定輸出路徑,輸出文件名

你可以使用-o來指定輸出路徑,-o選項同樣做了防呆設(shè)計,你可以指定路徑但不帶文件名,mdout會自動識別你輸入文件的文件名和你指定的輸出類型為你設(shè)置名稱,但你同樣可以指定路徑+文件名

  • 指定輸出到上級文件夾,自動命名

    mdout yourfile.md -o ../
    
  • 指定輸出到/tmp/markdown文件夾,自動命名

    mdout yourfile.md -o /tmp/markdown
    
  • 指定輸出到當前文件夾下的badoutput.name

    mdout yourfile.md -o badoutput.name
    

    千萬不要這么干,盡管程序不會阻止你設(shè)置你的文件名,但是使用規(guī)范的后綴是個好習慣。

  • 指定輸出到當前文件夾下的goodname.pdf

    mdout yourfile.md -o goodname.pdf
    

指定主題

主題系統(tǒng)只對markdown輸入有效

mdout有著方便易用的主題系統(tǒng),你可以很自由地自定義主題,mdout預設(shè)了三套主題

  • 默認主題:default
  • 數(shù)學公式拓展主題:mathjax
  • github風格主題:github

你可以使用-e選項來指定主題

  • 指定為github主題

    mdout yourfile.md -e github
    
  • 指定為數(shù)學公式拓展主題

    mdout yourfile.md -e mathjax
    

指定主題后上面提到的輸出選項依舊可用,可以配合-t html選項輸出中間的html文件,這樣可以調(diào)試主題效果,詳細的說明將在自定義章節(jié)中提到

defaultmathjax這兩套主題的配色是一模一樣的,區(qū)別在于mathjax是同時支持代碼語法高亮和數(shù)學公式渲染的,而default只支持代碼語法高亮

mathjax可以渲染類似這樣的公式

$$\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.$$

我可以將mathjax設(shè)為默認主題并刪除default,但是我沒有那么做,因為default可以作為一個能滿足代碼語法高亮的最小模板 (當然你可能不需要代碼語法高亮,這樣的話default并不能算最小模板) ,基于default模板進行自定義主題將變得非常簡單

至于自定義主題的教程,將在后面提到

打印頁面設(shè)置

此項僅在輸出pdf時有效

打印頁面大小設(shè)置

mdout預設(shè)了8種頁面大小,如果有更多需求,可以在issues提出

  • A1 - A5
  • Legal
  • Letter
  • Tabloid

A4為默認輸出頁面大小,你可以使用-f來指定輸出頁面的大小。同時做了防呆設(shè)計,如果你一不小心打成了大寫、小寫,甚至你手抽打成了大小寫混合,都是可以正常識別的??上В来舨环郎?,你把字母都打錯了就不能怪我了

  • 指定輸出pdf頁面格式為A4(閑著沒事干敲著玩)

    mdout yourfile.md -f a4
    
  • 指定輸出pdf頁面格式為Tabloid

    mdout yourfile.md -f tabloid
    

打印頁面方向設(shè)置

mdout只支持兩種方向

  • 縱向:portrait
  • 橫向:landscape

默認打印頁面方向為縱向,你可以使用-r指令來指定頁面方向格式

  • 指定輸出pdf頁面格式為橫向

    mdout yourfile.md -r landscape
    

打印頁面邊距設(shè)置

mdout支持你自定義頁面邊距,以英寸為單位,默認為0.4英寸

  • 0.4英寸 ≈ 10cm

你可以使用-m指令來指定頁面邊距大小

  • 指定打印邊距為0.2英寸

    mdout yourfile.md -m0.2
    
  • 去除頁面邊距

    mdout yourfile.md -m0
    

自定義配置文件

在配置文件安裝目錄下面

  • macOS : /Users/你的用戶名/binmdout
  • linux: /home/你的用戶名/binmdout
  • windows: /c/users/你的用戶名/binmdout

有一個conf.json文件

{
    
    "Out":"",

    "Type":"pdf",

    "Theme":"default",

    "PageFormat":"a4",

    "PageOrientation":"portrait",

    "PageMargin":"0.4"
    
}

包含了以上所有的可選設(shè)置,直接修改配置文件可以作為每次使用mdout的默認參數(shù)值

自定義配色

mdout有著簡單易用的主題系統(tǒng),跟著下面的步驟來,你可以很輕松的添加自己的自定義效果

首先打開你的配置文件所在的文件夾

在你的配置包里面會有一個conf.json文件和theme主題文件夾,其中conf.json文件是用來更改默認參數(shù)的,theme存放了你的主題包。

進入theme主題包,你可以看到默認的三個主題包

  • default
  • mathjax
  • github

假設(shè)你現(xiàn)在需要自定義你的頁面配色,大小,語法高亮等一切和css有關(guān)的內(nèi)容,并且你想要為你的主題起名為mytheme

首先你需要完整復制default的所有內(nèi)容,到default文件夾所在的目錄并重命名為mytheme,此時你的theme文件夾里有四個文件夾:

  • default
  • mathjax
  • github
  • mytheme

然后你需要找到一個測試用例比如說這樣一個markdown文件

# 測試標題

## 測試二級標題

### 測試三級標題

#### 測試四級標題

- 測試無序列表1
- 測試無序列表2

1. 測試有序列表1
2. 測試有序列表2

- 測試嵌套
    1. 測試嵌套第二次
        - 測試嵌套第三層


> 測試引用

測試表格

| 標題1 | 標題2 | 標題3 |
| ----- | ---- | ---- |
| 文本1 | 文本2 | 文本3 |
| 文本4 | 文本5 | 文本6 |

**這是加粗的文字**  
*這是傾斜的文字*  
***這是斜體加粗的文字***  
~~這是加刪除線的文字~~

![百度圖片](https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top_86d58ae1.png)

[測試超鏈接](https://github.com/JabinGP/mdout)

`測試代碼段高亮`

測試代碼塊高亮

    package main

    import (
        "fmt"
    )

    func main() {
        fmt.Println("Hello Mdout")
    }

緊接著使用mdout yourfile.md -e mytheme -t html來獲取這個markdown文件指定mytheme主題的html輸出結(jié)果,用編輯器打開html文件,同時用chrome打開html文件,可以看到,頁面已經(jīng)自動引入了你剛剛創(chuàng)建的自定義主題包css

<!-- 添加頁面樣式 -->
<link rel="stylesheet" href="/Users/jabin/binmdout/theme/mytheme/css/page.css"/>
<!-- 添加hljs樣式 -->
<link rel="stylesheet" href="/Users/jabin/binmdout/theme/mytheme/css/hljs.css"/>

主題配色分為兩個文件,一個是頁面配色css文件,一個是代碼高亮的css文件

如果你要修改頁面配色,只需要一邊開著瀏覽器,一遍打開剛剛主題包里面的
mytheme->css->page.css修改,然后刷新瀏覽器查看結(jié)果

或者你想更改語法高亮的配色,由于mdout依賴于hljs,你只需要去hljs官網(wǎng)下載你喜歡的主題包,然后替換mytheme->css->hljs.css里的內(nèi)容就可以了

如果你完成了你的主題修改,你可以將剛剛生成的html刪除,或者你想留做自己動手的紀念也是可以的

最后,你可以使用mdout yourfile.md -e mytheme來指定使用你的自定義主題啦,或者你可以在前面提到過的conf.json里面配置默認使用你的mytheme主題

如果覺得對你有幫助,點個star吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Markdown概述 宗旨 Markdown 的目標是實現(xiàn)「易讀易寫」。Markdown 的特點就是,讓寫作變得更...
    心疼你萌萌噠閱讀 10,196評論 1 24
  • 最近遇到一些問題,就是團隊中會有些伙伴踩得坑的收集問題或者有些較為復雜的業(yè)務(wù)需求文檔共享上成本較高,所以考慮弄...
    tobAlier閱讀 4,044評論 0 5
  • 去年有段時間得空,就把谷歌GAE的API權(quán)威指南看了一遍,收獲頗豐,特別是在自己幾乎獨立開發(fā)了公司的云數(shù)據(jù)中心之后...
    騎單車的勛爵閱讀 21,116評論 0 41
  • 喜歡到底是啥呀? 遠遠地、默默地看著他,看他跟別人玩。君君以為那樣就夠了。 聽他講話,聽他講大千世界,聽他胡侃瞎聊...
    念去去兮閱讀 739評論 5 19
  • 綠裙一片托玉蓬 月色迷蒙 心亦迷蒙 荷香千縷繞古城 夜夜聽蛙聲
    梅開如雪閱讀 289評論 0 10

友情鏈接更多精彩內(nèi)容