以下文檔來自 JabinGP/mdout,如果覺得對你有幫助,不妨點個star鼓勵一下~
mdout
一個Go語言實現的Markdown轉PDF命令行工具,基于headless chrome,簡單、可靠、易安裝、可定制化、易拓展
mdout有何特點
簡單
mdout會根據后綴,自動識別輸入類型
mdout markdown.md
mdout local_html.html
mdout http://www.baidu.com
可靠
mdout可以完整保留你md文件里的代碼格式,圖片,甚至是數學公式,支持代碼格式語法高亮
電腦不會如人一般等待頁面加載完全再選擇打印,電腦自動執行打印時頁面尚未渲染完全是件非常頭疼的事情,對此,mdout沒有簡單地使用sleep休眠機制去碰運氣,而是實現了一套非常簡單的同步渲染機制,即便是你有1萬行的mathjax數學公式、1萬行的代碼語法高亮要渲染,mdout都能完美的保證你的pdf上不會有任何一個未渲染完成的元素
易安裝
除了chrome,mdout不依賴于其他任何環境,你只需要選擇對于系統的安裝包,下載并解壓即可使用,更為macOS和linux提供了一鍵安裝腳本,為windows提供了豐富的圖文教程
可定制化
mdout將每個模板獨立為主題,并且支持指定輸出html文件,可以很方便地自定義頁面配色,自定義語法高亮配色
易拓展
mdout基于headless chrome,這使得mdout幾乎兼容市面上所有能用于的前端組件,并且mdout將組件歸類為主題的一部分,你同樣可以輸出html來調試自己的自定義拓展插件
獲取和安裝
由于Github下載速度實在是太過寒酸,只有30KB/s,以下的鏈接全部來自于阿里云服務器,盡管服務器有帶寬限制,但是應對這個大小的文件還是沒問題的
mdout同時支持windows,linux,macOS,但目前只支持64位的系統
- linux:mdout.linux.x86-64.tar.gz
- macOS:mdout.macOS.x86-64.tar.gz
- windows:mdout_windows_x86-64.zip
mdout已經為各平臺打包了可執行文件,因此無論何種方式安裝,無非就是下載可執行文件壓縮包后解壓縮,解壓完就可以在mdout所在文件夾使用mdout了
但是為了命令行使用方便,我更推薦將mdout配置到系統的環境變量中,這樣隨時隨地隨心所欲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可執行文件
windows
-
點擊下載
- windows:mdout_windows_x86-64.zip
下載后使用zip工具解壓縮,解壓后會得到一個mdout.exe可執行文件
-
放置軟件
將
mdout.exe
可執行文件放置平時放軟件的地方,比如D:\mdout
這個文件夾里面,此時你的mdout.exe
的全路徑應該是D:\mdout\mdout.exe
-
設置環境變量
如果不設置環境變量也可以使用,但是缺點是你需要使用cmd,powershell或者gitbash手動進入
D:\mdout
才能使用mdout
命令確定路徑
1.jpg
設置環境變量,右鍵我的電腦 -> 選擇屬性 -> 左邊的高級系統設置
選擇高級 -> 點擊環境變量
找到下半部分的系統變量,雙擊Path
行
在彈出來的窗口選擇新建
填入D:\mdout
,然后一定要連續點完三個確定
-
檢驗
打開cmd,或者powershell,或者你有gitbash都ok(推薦使用命令行的windows用戶都裝一個gitbash),輸入
mdout
,看到如下輸出就是成功了
linux
-
下載linux版本
點擊下載
下載完成后解壓tar.gz包,解壓后會得到一個mdout可執行文件
-
將軟件放入可執行文件庫
打開終端,定位到剛剛下載的文件所在路徑
cd 你的文件所在文件夾
然后將可執行文件直接移動到/usr/local/bin,linux環境下需要sudo權限
sudo mv ./mdout /usr/local/bin
輸入密碼就可以了
-
檢驗是否成功
輸入
mdout --version
,看到版本號輸出就是成功了
macOS
-
下載macOS版本
點擊下載
下載后使用工具解壓tar.gz包,解壓后會得到一個mdout可執行文件
-
將軟件移動到可執行文件庫
打開終端,定位到剛剛下載的文件所在路徑
cd 你的mdout可執行文件所在文件夾
然后將可執行文件直接移動到/usr/local/bin
mv ./mdout /usr/local/bin
-
檢驗是否成功移動
輸入
mdout --version
,看到版本號輸出就是成功了
使用說明
使用前提
mdout依賴于chrome瀏覽器,如果你的電腦已經安裝了新版的chrome瀏覽器,無需更多配置,可以直接運行mdout,如果是舊版的chrome瀏覽器,建議進行升級后使用,如果還未安裝chrome瀏覽器,請安裝后再使用mdout
進行系統初始化
如果你不是使用腳本安裝的,或者腳本安裝不完全成功的,需要手動執行初始化,如果腳本安裝成功,則跳過這一步
mdout依賴于html、css、js的模板,但是模板沒有打包進程序,這是出于自定義化的考慮,執行初始化命令,程序會自動下載需要的文件到配置文件路徑,至于這個路徑在哪,在后面會提到,同時初始化程序執行結束后也會輸出這個路徑,請記住這個路徑,在一些自定義和設置默認值時會使用到
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支持輸出中間過程的結果。但對于html輸入或者url輸入,它們的唯一輸出結果就是pdf文件了
-
markdown輸出pdf(輸出pdf為默認選項)
mdout youtfile.md -t pdf mdout yourfile.md
-
markdown輸出解析后html標簽(這個選項可以得到markdown解析器的解析結果)
mdout youtfile.md -t tag
-
markdown輸出經過處理后的完整html文件(常常用來調試主題)
mdout youtfile.md -t html
輸出路徑
mdout支持指定輸出路徑,輸出文件名
你可以使用-o
來指定輸出路徑,-o
選項同樣做了防呆設計,你可以指定路徑但不帶文件名,mdout會自動識別你輸入文件的文件名和你指定的輸出類型為你設置名稱,但你同樣可以指定路徑+文件名
-
指定輸出到上級文件夾,自動命名
mdout yourfile.md -o ../
-
指定輸出到
/tmp/markdown
文件夾,自動命名mdout yourfile.md -o /tmp/markdown
-
指定輸出到當前文件夾下的
badoutput.name
mdout yourfile.md -o badoutput.name
千萬不要這么干,盡管程序不會阻止你設置你的文件名,但是使用規范的后綴是個好習慣。
-
指定輸出到當前文件夾下的
goodname.pdf
mdout yourfile.md -o goodname.pdf
指定主題
主題系統只對markdown輸入有效
mdout有著方便易用的主題系統,你可以很自由地自定義主題,mdout預設了三套主題
- 默認主題:
default
- 數學公式拓展主題:
mathjax
- github風格主題:
github
你可以使用-e
選項來指定主題
-
指定為github主題
mdout yourfile.md -e github
-
指定為數學公式拓展主題
mdout yourfile.md -e mathjax
指定主題后上面提到的輸出選項依舊可用,可以配合
-t html
選項輸出中間的html文件,這樣可以調試主題效果,詳細的說明將在自定義章節中提到
default
和mathjax
這兩套主題的配色是一模一樣的,區別在于mathjax
是同時支持代碼語法高亮和數學公式渲染的,而default
只支持代碼語法高亮
mathjax
可以渲染類似這樣的公式
$$\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.$$
我可以將mathjax
設為默認主題并刪除default
,但是我沒有那么做,因為default
可以作為一個能滿足代碼語法高亮的最小模板 (當然你可能不需要代碼語法高亮,這樣的話default
并不能算最小模板) ,基于default
模板進行自定義主題將變得非常簡單
至于自定義主題的教程,將在后面提到
打印頁面設置
此項僅在輸出pdf時有效
打印頁面大小設置
mdout預設了8種頁面大小,如果有更多需求,可以在issues提出
- A1 - A5
- Legal
- Letter
- Tabloid
A4為默認輸出頁面大小,你可以使用-f
來指定輸出頁面的大小。同時做了防呆設計,如果你一不小心打成了大寫、小寫,甚至你手抽打成了大小寫混合,都是可以正常識別的??上?,防呆不防傻,你把字母都打錯了就不能怪我了
-
指定輸出pdf頁面格式為A4(閑著沒事干敲著玩)
mdout yourfile.md -f a4
-
指定輸出pdf頁面格式為Tabloid
mdout yourfile.md -f tabloid
打印頁面方向設置
mdout只支持兩種方向
- 縱向:
portrait
- 橫向:
landscape
默認打印頁面方向為縱向,你可以使用-r
指令來指定頁面方向格式
-
指定輸出pdf頁面格式為橫向
mdout yourfile.md -r landscape
打印頁面邊距設置
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"
}
包含了以上所有的可選設置,直接修改配置文件可以作為每次使用mdout的默認參數值
自定義配色
mdout有著簡單易用的主題系統,跟著下面的步驟來,你可以很輕松的添加自己的自定義效果
首先打開你的配置文件所在的文件夾
在你的配置包里面會有一個conf.json
文件和theme
主題文件夾,其中conf.json
文件是用來更改默認參數的,theme
存放了你的主題包。
進入theme
主題包,你可以看到默認的三個主題包
default
mathjax
github
假設你現在需要自定義你的頁面配色,大小,語法高亮等一切和css有關的內容,并且你想要為你的主題起名為mytheme
首先你需要完整復制default
的所有內容,到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://github.com/JabinGP/mdout)
`測試代碼段高亮`
測試代碼塊高亮
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello Mdout")
}
緊接著使用mdout yourfile.md -e mytheme -t html
來獲取這個markdown文件指定mytheme主題的html輸出結果,用編輯器打開html文件,同時用chrome打開html文件,可以看到,頁面已經自動引入了你剛剛創建的自定義主題包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
修改,然后刷新瀏覽器查看結果
或者你想更改語法高亮的配色,由于mdout依賴于hljs,你只需要去hljs官網下載你喜歡的主題包,然后替換mytheme
->css
->hljs.css
里的內容就可以了
如果你完成了你的主題修改,你可以將剛剛生成的html刪除,或者你想留做自己動手的紀念也是可以的
最后,你可以使用mdout yourfile.md -e mytheme
來指定使用你的自定義主題啦,或者你可以在前面提到過的conf.json
里面配置默認使用你的mytheme
主題
如果覺得對你有幫助,點個star吧!