純手工打造ePub 電子書-黑暗執行緒 | 電子書製作epub

加上好奇心驅使,讓我有自己寫C# 程式製作ePub 的念頭。

一切要先從了解ePub 格式開始. ePub 其實是一個ZIP 檔,裡面裝了XHTML、圖檔、css ...【寫在前面】ePub電子書對大多數人來說只要開閱讀器能讀就好,即便要製作ePub電子書,現成軟體、工具、服務或線上轉換器多不勝數,極少人需要去了解技術細節。

如果你對ePub結構感到興趣,或希望讀得不開心時有能力自己修正調整,或是想寫程式批次產生或轉換,有述需求再繼續讀下去。

去年入手電子書閱讀器,看了不少電子書。

電子紙(e-Ink)的閱讀體驗很接近印刷紙張,比手機或平板螢幕柔和很多,長時間閱讀眼睛也較不會疲倦。

但有時在網路上看到一些長篇技術文件,常會想:如果能抓回來轉成ePub,再找時間用電子紙看多好?加上好奇心驅使,讓我有自己寫C#程式製作ePub的念頭。

一切要先從了解ePub格式開始ePub其實是一個ZIP檔,裡面裝了XHTML、圖檔、css,說穿了跟Worddocx的概念差不多。

(提到XHTML,寫網頁的老人肯定很有感,這位被HTML5推翻的舊時代餘毒竟轉進ePub撐起一片天)用XHTML寫好書本內容後,要轉成ePub電子書還需要一些額外配件。

就用實例來練習吧!假設我想寫一本「ePub手作練習」ePub電子書,內容分成兩章分別存成format.html及diy.html。

要打包的檔案結構如下圖,根目錄下有mimetype跟META-INF及OEBPS子資料夾,META-INFO下只有一個container.xml,其餘內容都放在OEBPS下:(參考:EPUB2規格by周邦信筆記本)以下簡單說明各檔案用途:mimetype檔案(無附檔名),內容必須為application/epub+zip不多不少共20個字元,而且要是ZIP的第一個檔案。

container.xml放在META-INF子目錄下,指向content.opf,供閱讀器取得這本電子書相關資訊:書籍內容檔案建議放在名為OEBPS(OpeneBookPublicationStructure)的目錄下,但此點非強制性,要放在ZIP根目錄或任意名稱的資料夾也可以。

content.opf定義了電子書資訊與內容元素。

metadata可包含書籍作者、出版日期、分類等圖書資訊;manifest要列舉ePub檔內的檔案項目,項目id屬性用於與metadata及spine連結;spine則定義閱讀時相關元素的先後順序;zhePub手作練習黑暗執行緒b1ce20ed-9214-470c-97d0-2648fc2f7760

常見投資理財問答


延伸文章資訊