1. 程式人生 > >Markdown轉PDF→利用 Markdown 製作電子書|非常簡單

Markdown轉PDF→利用 Markdown 製作電子書|非常簡單

Markdown轉PDF→利用 Markdown 製作電子書

前言

遇到什麼問題就解決什麼問題,什麼不會就學什麼.

是這樣的,因為最近在看資料分析的書籍《利用Python進行資料分析 原書第2版》,這本書的英文很早就有了,但是網上找不到英文版,不過簡書上有人發表了中文翻譯版。苦於不是電子書,感覺閱讀起來很不方便,也難以攜帶。簡書上有HTML的文件和github上有markdown的文件翻譯,所以我在想能不能將HTML和markdown格式的檔案轉換為PDF,然後弄成電子書。有了需求就開始尋找辦法了,網上都有很多方法,以前我使用Atom的markdown外掛匯出的,但是效果不是很好,一些圖片沒辦法匯出,而且也沒辦法生成docx

文件。下面我將介紹兩種方法,如何製作電子書的.

工具準備

  • pandoc
    直接使用pandoc這個軟體進行轉換
  • pypandoc
    通過Python的一個庫進行轉換

工具一:pandoc

工具二:pypandoc

工具三:Adobe Acrobat DC

建議:不熟悉Python的用第一種方法,相對來說第一種方法簡單,而且文件豐富,第二種方法需要安裝Python環境,很麻煩,除非你使用Python進行開發。

使用方法

具體的使用方法建議大家閱讀文件操作,畢竟每個人的需求不一樣。pandoc的轉換功能非常強大,而且很實用。

此外,因為將markdown檔案轉換位PDF檔案需要安裝LaTeX

,但是使用過程會遇到很多麻煩,解決起來很棘手。

所以我的想法是,將markdown轉換為docx檔案,再合併,最後將合併好的電子書轉換為PDF檔案。

這樣也可以省去很多不必要的麻煩。

當然其實功能還有很多很多,我也只是介紹了幾個,或者根據我的需要來選擇,你也可以選擇其他的方法。

如下,我將這本書的markdown檔案下載到本地了,一共是17個檔案。

由於轉換過程中檔名包含中文會出錯,所以我將檔名全部修改為數字.
提供一個一鍵修改檔名的工具吧,下載直接開啟使用即可
其他更多使用方法大家自己測試吧
FreeRename下載 提取碼: bg86

方法一

指令碼封裝,支援批量轉換
把轉換命令封裝成bat批處理指令碼,以後再進行轉換的時候只需簡單雙擊一下bat指令碼即可,比如封裝成convertPDF.bat檔案,內容如下:

pandoc text.md -o text.docx && pause

批量處理:假如幾十上百個md檔案要批量轉為docx檔案,難道要手工一個個複製這些檔名和pandoc命令去轉換嗎?完全不需要,一個bat指令碼搞定(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

使用方法很簡單,使用文字編輯器建立一個TXT文件,然後複製上述程式碼進去,儲存,最後退出來修改檔案字尾名為.bat,將需要轉化的markdown檔案放到一個資料夾下,複製convertPDF.bat到該目錄下,雙擊開啟,等待轉化完成。

這個時候就將markdown檔案轉化為docx文件了。

方法二

直接使用pandoc轉換。

pandoc text.md -o text.docx

注:執行此程式碼需要進入到該目錄下

  • ①Windows10 系統直接在該目錄空白處,按住Shift鍵,然後滑鼠右鍵,在此處開啟Powershell/cmd視窗
  • win + R鍵開啟執行視窗,輸入cmd回車,然後進入該目錄下,具體的操作可以谷歌。

方法三

使用Python進行操作。
相對來說用pypandoc還是有很多好處的,例如你可以利用這個庫輕鬆開發出一個簡單的應用,還可以利用這個庫實現一些抓取網頁的功能,因為pandoc可以實現下載一個web page然後轉化為docx或者其他格式的檔案,而pypandoc提供了pandoc的介面引數,非常方便。當然這都是對學習Python的人來說比較簡單。

import pypandoc
output = pypandoc.convert_file('somefile.md', 'docx', outputfile="somefile.docx")

最簡單的例子就是這樣,首先進入這個資料夾或者在Python中指定檔案目錄,然後執行上述程式碼即可。要是想批量轉化也是可以的,定義好相對路徑,寫好指令碼,打包為EXE可執行檔案,實現一個遍歷轉化markdown為docx。這裡就不再寫這個操作了,比較簡單,至於打包為可執行檔案的可以參考我之前的文章。

對於學習Python的同學,我還是建議使用pypandoc 的,因為可以呼叫Python程式。

合併docx&轉為PDF

可以先轉換為PDF再合併PDF,但是這樣感覺不是一個完整的PDF檔案,而且不夠美觀。所以考慮先合併docx再轉PDF,這樣更完美。

合併docx

我們使用Office 2010將17個docx檔案合併

  • 首先新建一個名為利用Python進行資料分析第二版 的docx檔案
  • 開啟這個新建的檔案,點選頁面上方功能區的插入 選項卡下的物件檔案中的文字,按照順序選擇這17個檔案,點選插入。這個時候就成功合併了這17個檔案,並且左邊是帶有完整目錄的,並且該目錄可以定位到對應的位置。
  • 點選儲存

轉為PDF

  • 直接利用Adobe Acrobat DC在word中的外掛轉位PDF,點選上方功能區中的Acrobat下的建立PDF,點選儲存。現在成功建立好PDF檔案了。
  • 電子書製作完成,下面看看預覽效果。

《利用Python進行資料分析|第二版》下載

因為沒看到有免費的電子書下載,所以這裡分享一下我製作好的這本電子書吧。
這本書對於學習Python資料分析還是很好的,大家可以下載學習。
練習環境可以使用Anaconda|Jupyter notebook

  • 書籍下載: 關注個人公眾賬號【net咖啡屋】回覆電子書18

pandoc的其他功能

這裡順便再提一下pandoc的其他的一些功能,具體的大家可以看文件學習測試。

例如之前我提到的這本書
《Learning Scrapy》
譯:《精通Python爬蟲框架Scrapy》

一樣是有簡書翻譯的

《Learning Scrapy》|簡書

很不幸運的是,作者沒有給出markdown原始檔,我們只可以網上閱讀了。為什麼需要markdown原始檔呢,因為markdown良好的編輯格式使得轉化的時候保持了層次分明、帶書籤的板式,很方便我們製作電子書,節省了很多時間。

值得慶幸的是,pandoc提供了web page 轉化為docx的功能。

下面我們來嘗試一下。

pandoc -s -r html webpageURL -o doc.md

這裡隨便轉化了一頁,但是markdown下的預覽很糟糕,因為很多其他多餘的內容。
然後我先將其轉化為 docx 文件,然後再將多餘的內容刪掉,然後修改儲存。看起來效果還是很好的。

pandoc doc.md -o doc.docx

我測試了多個頁面的爬取和轉化,發現效果還是很好的,這裡如果使用Python的pypandoc來做,就可以做一個EXE程式了,很方便,可以實現自動輸入webpagURL實現爬取,然後轉化,還是很不錯的體驗。

更多的用法大家自行測試和思考吧,這裡不再贅述了。

Markdown線上生成PDF|網站

這裡推薦大家一個markdown自動轉化PDF的免費網站吧,體驗了一下,感覺還是非常不錯的。

簡單介紹一下

免費文件轉換|值得推薦

這個設計很廣,可以轉換的檔案和內容非常多!!!

具體的我這裡不介紹了,實在是很豐富!

歡迎關注我的個人公眾賬號:net咖啡屋
目前涉獵的領域有
『Python』『資料庫』『C++』
『資料分析』『網路爬蟲』『GUI開發』
我喜歡鑽研,喜歡學習自己感興趣的東西,
在這裡,我會堅持分享很多有用的學習心得和學習資源,
你可以在這裡找到你需要的一些學習經驗和學習資源。