如何把 Markdown 文件轉化為 PDF?
每章幾個小節每個小節一個文件,怎麼生成整個的PDF呢?
說個簡單的方法,如果你的markdown(md)文件使用chrome預覽,就比較簡單了。
點列印,目標,選本地另存為pdf,即可。看圖:
這樣保存的PDF非常完美,基本上你在chrome里預覽是什麼格式,保存完就是什麼格式。
-----------------------------------------------------------------------------------------------------------------------------------
2014-04-18更新,可能按這種操作生成的PDF文檔中粗體(中文部分)可能會有問題,個人理解是與字體有關,可以按這樣操作:
先選擇這個,
然後選擇:
這個可能與你電腦裝的PDF軟體會有關係,可能會有不同。
這樣導出的PDF粗體是正常的。
Pandoc - About pandoc有在線版和linux版,全能的document converter。
如 md --&> pdf:
pandoc README -o example13.pdf
寫完才發現和@Jeky 重了,抱歉抱歉。那我就加一個技術人員用得到的吧。
http://www.reportlab.com/提供各種語言的介面支持。------ 中文問題 ------
謝@Tony 提醒,pandoc在轉中文的時候非常頭疼,目前比較成熟的做法是使用LaTex 引擎,手動配置系統內的中文字體進行,具體可以參照 圖靈社區 : 閱讀 : 用Markdown來寫自由書籍 進行配置測試。誠然,這個方案比較繁瑣和麻煩,幾個包下來500MB空間就沒了。如果你是開發人員,且想自己配一些樣式,還可以選擇reportlab以及基於reportlab的chrisglass/xhtml2pdf ,這樣你就可以簡單的pandoc轉為html,再由html輕鬆地轉為pdf啦,還以自由配置樣式哦。------ 章節 生成整本書的做法 ------開源書籍社區的傳統做法也是基於pandoc(利於出版業的排版),著名的例子有 progit/progit ,以及上文提到的 圖靈社區 : 閱讀 : 用Markdown來寫自由書籍 ,已經有寫好的腳本幫助你做這件事啦。恰好我剛剛做完這個工作,也就來湊一下熱鬧吧:-)
用的是免費的pandoc,關於pandoc的下載和安裝不再提了,只是提醒一下安裝pandoc之後,是需要安裝LaTeX的(如果嫌MacTex太大,可以只安裝basictex),否則不能轉PDF文件。
好了,現在假設你已經安裝好了pandoc和LaTeX,一個命令行就完成了你的任務$pandoc -N -s --toc --smart --latex-engine=xelatex -V CJKmainfont="PingFang SC" -V mainfont="Monaco" -V geometry:margin=1in 1.md 2.md 3.md ... xx.md -o output.pdf
--latex-engine=xelatex -V CJKmainfont="PingFang SC"
沒有這個參數,pandoc顯示不了中文,一個是指定LaTeX的渲染引擎,一個指定中文字體,你可以根據自己系統安裝的字體來設置,其他的幾個參數是錦上添花的東西,不是必須,只是我比較喜歡帶書籤的PDF,所以就加上了--toc,也喜歡大綱標題上帶上自動分配的序列號,例如1 1.1 1.1.1……,所以也加上了-N選項。
可以支持多文件轉換到一個PDF中,因為我大部分情況是只轉換一個markdown文件,所以最多支持多少個文件就沒有測試,我試了一下,轉換幾個文件還是可以的,下圖是我轉換兩個文件到一個PDF中:![兩個MD合成一個PDF](http://ww1.sinaimg.cn/mw690/3e37e59cgw1f43jddav2aj20vg0liq84.jpg)Mac 下用 Mou 可以直接轉 pdf,還支持自定義 CSS。
以上。你需要這個:phodal/ebook-boilerplate: A Markdown convert to Ebook html、mobi、epub、pdf、rtf Template
編寫的時候用 Markdown 分章,通過 Pandoc + Latex 來將內容轉為 PDF。
已經用這個模板寫了六七電子書,見 GitHub:
- 《Phodal#x27;s Idea實戰指南》
- 《一步步搭建物聯網系統》
- 《GitHub 漫遊指南》
- 《RePractise》
- 《Growth: 全棧增長工程師指南》
- 《Growth: 全棧增長工程師實戰》
- 《我的職業是前端工程師》
簡介
在寫電子書《一步步搭建物聯網系統》的時候就為自己打造了一個生成HTML的生成腳本。
在寫電子書《GitHub 漫遊指南》,發現了 Backbone Fundamentals的構建電子書腳本。於是就複製了一份,然而卻發現不支持生成中文的PDF——沒有Tex模板。然後,就自己添加了一個Tex模板。
最近在整理一些文章、觀點、想法,它就變成了《RePractise》——又一本電子書。
接著,接著,接著,就有了這個代碼庫。
Usage
- 運行init.sh
./init.sh
輸入書名和作者
- 編譯
編譯全部: epub、mobi、html、pdf、rtf
make all
編譯特定: epub、mobi、html、pdf、rtf
如
make html
Setup
- 基本編譯需要pandoc
- PDF要求環境Tex,推薦使用TexLive。
- mobi需要kindlegen。
GNU/Linux和Mac OS可以使用
gem install kindlegen
http://johnmacfarlane.net/pandoc/ 應該能滿足你,不過你需要先裝一下LaTeX。嫌安裝麻煩的話,可以試試md-&>html-&>pdf....
在Mou下按command+P
這樣就可以了!command+Shift+P 在直接導出中選擇為pdf就可以!你可以用mdcharm,它就有導出pdf的功能,最主要還是可以免費使用
我個人是用 @何世友推薦的Pandoc轉換方法,這種方法在linux下還是很好用的.如果你沒有線下環境,也可以通過在線轉換,線上方式鏈接:Convert Markdown to PDF
剛解決這個問題!!
希望大家能把我的答案頂上去。=======嘗試了高票答案們的方法,要麼下載配置各種工具,甚至是一些Linux Only的方式;要麼遇到中文就亂碼,要麼還得註冊收費......我推薦一個,不是廣告。我是為知筆記重度用戶,最近也被簡書的閱讀/寫作體驗折服。推薦大家使用為知代替evernote管理自己的信息。做以上鋪墊,是因為,我剛在為知插件中發現了為知筆記應用中心筆記轉PDF插件。所以,如果單單是為了markdown轉PDF,使用這個筆記插件能完美解決你的問題。
此外,你還收穫了最適合國人習慣的資料管理工具 為知筆記 !免費無內購 iOS 應用:iTunes 的 App Store 中的「Evermark」
- MD 視圖右上方的羅盤按鈕是預覽。
- 預覽視圖下,點分享按鈕:作為 PDF 文檔分享。
請看圖……
(其實 iOS 用為知筆記客戶端 [ iPhone版 | iPad版 ] 寫 MD 筆記也很贊,可惜不能 PDF 輸出)StackEdit – markdown editor
用過就知道好,如果只是為了把單個 markdown 文件轉換為 PDF,
這個個人感覺最好了,排版中文字體什麼的都無需操心。當然,如果是寫書什麼的還是搞個自動化的處理吧,參閱之前的答案。好幾年過去了,強力推薦一個Win端的MD編輯器 typora http://www.typora.io,目前還是beta版,正式版之後好像要收費,這款編輯器是實時預覽的,md文件可以直接另存為pdf、html,配合其他軟體還可以導出為docx latex rtf epub之類的文件,支持自定義css,表格支持居中靠左靠右對齊,支持自動生成目錄,導出的PDF也帶目錄
這是實時預覽的結果另存為pdf之後的效果之前偶爾幾次md轉pdf用的是最高贊chrome預覽列印的方法。但是因為對字體和排版不太滿意就花幾天寫了個web應用:www.mdtr2pdf.com。可以在線轉化markdown文件。排版和字體是Github的風格,而且更主要的是支持中文UTF8編碼。
歡迎大家使用━(*`?′*)ノ亻!
今天發現了一個超簡單的方法,Atom有一個Markdown Preview的插件,Markdown文件下按ctrl+shit+m就可以預覽Markdown,然後右鍵生成的預覽文件可以保存為html文件,再用chrome打開這個html文件,右鍵Print裡面轉換成pdf。
移動端或Mac的話,可以試試Byword。
對比了下輸出效果,預覽及導出PDF完美一致。原文件(txt)2KB,導出的PDF 47KB。基本上沒人答到點子上。
題主希望了解多個md文件合併成一個pdf,關鍵點是多合一,估計最好還要自動算章節號和目錄頁碼上下文引用注釋什麼的,而不是單純地轉化pdf-那樣的工具多了去了。個人的體驗,pandoc+texlive應當足夠用了。具體的想法是把章節md放在一個文件夾中,pandoc先各自轉化,同時搜集章節信息,之後再整合,就生成一個pdf文件了。文青的解決方案則是單章節列印成pdf格式(chrome, pdf creator, acrobat pro, etc.)然後用acrobat pro 合併多個pdf。優點是無腦,缺點是缺乏整體上下文聯繫,以及需要購買acrobat pro。Win平台下,目前已經試過比較順手的方法是:安裝Texts[Texts | PDF XeLaTeX Templates]、Pandoc[Pandoc - About pandoc]和Miktex[Home - MiKTeX Project Page],順利實現Markdown轉html、epub、word、pdf、xelatex格式。效果如下:
- 顯示效果很優秀
- 支持圖片
- 支持Latex公式
- 支持多平台
- 缺點也有,沒有文本編輯起來順心,總是有些莫名其妙的不爽,比如想往編輯器里粘貼很多文字,結果只貼進去一小部分,比如想往編輯器里貼入代碼結果沒啥反應,比如蛋疼的四種不同方言格式要手動切換,否則可能效果出不來,不一而足。
GitBook
好久沒上知乎了,看了好多回答好像不太好用,為了在公司裡面推廣開發組用md+git(svn)架設文檔協同,而且為了方便同事在Windows下使用,專門研究了一下Atom+markdown-themeable-pdf插件,並成功部署。關鍵是這款插件還可以定製頁眉、頁腳的信息,還能定製代碼顯示樣式,當然要自己研究一下這個插件了。定製路徑:Mac下:
/Users/yourname/.atom/markdown-themeable-pdf/
Windows下:
C:Usersyourname.atommarkdown-themeable-pdf
主要文件
header.js //頁頭信息
footer.js //頁 腳信息
style.css //顯示樣式,代碼樣式可以定製
logo.png //LOGO
工作需要經常寫技術文檔,無奈Word插入代碼並不好用,後染上Markdown無法自拔!但又不能要求別人使用Markdown,故目標要將其轉換為國際通用的pdf文檔,本文將介紹如何使用Atom編輯Markdown文檔並將其轉換為pdf。
Atom使用說明綜合評估基於Windows的編輯器中,Atom表現更優秀,Atom是GitHub推出的一款開源編輯器,其強大的插件系統是其最大的特色,比如我們這裡要用到的MD文檔轉PDF就是基於Atom的插件完成。
Atom並不僅限於作為md文檔的編輯器,它同大多數編輯器一樣,可以作為其它編程語言使用的。
下載安裝前往Atom官網:Atom 即可下載最新版
Atom的安裝非常簡單,雙擊下載的應用程序即可完成安裝,其應用程序默認安裝在:C:UsersyournameAppDataLocalatom中,而其插件配置目錄在:C:Usersyourname.atom中,每次使用只需要點擊快捷方式即可。
使用Atom我們為了寫作md文檔,所以只需用Atom打開一個md文檔,或者新建一個md文檔,就可以按照md格式寫作了。使用ctrl+shift+M可以預覽文檔在html中的表現。
安裝插件根據我們實際需要,僅需安裝md轉pdf的插件(markdown-themeable-pdf)即可,這裡我們推薦一款有趣的插件:activate-power-mode,電腦配置足夠強大的話,可以嘗試顫抖的力量(https://9turn.com/xuan-ku-de-atomcha-jian-activate-power-mode/)。
Atom的插件是可以使用apm命令來進行在線安裝,實際因為一些原因,我們只能使用npm進行安裝,所以我們需要先安裝nodejs
安裝NodeJS前往NodeJS官網下載:https://nodejs.org/en/
安裝完成之後也是因為一些原因,需要將npm源改為國內淘寶源,方法如下:
npm config set registry http://registry.npm.taobao.org/
安裝md轉pdf的插件
前往GitHub下載該插件的壓縮包:https://github.com/cakebake/markdown-themeable-pdf
將壓縮包解壓至目錄C:Usersyourname.atom
用管理員方式打開Windows的命令行提示符,進入插件目錄
cd C:Usersyourname.atompackagesmarkdown-themeable-pdf-master
輸入npm install,等待安裝完成,用Atom打開md文檔,右擊文檔任意處,選擇Markdown to PDF,等待片刻完成轉換,如下圖:
轉換後的pdf完美表現
推薦閱讀:
※關於產品經理需要做哪些圖和哪些文檔,做這些圖片和文檔的魚骨流程是什麼樣的?如果有對於模版或例子就更好
※Macbook上如何在A3紙上印兩張A4紙的內容?
※長篇寫作用什麼文檔格式比較實用?
※對於個人來說,如何有效地管理電子文檔?
※如何用word實現內容的批量刪除?