Kindle?支持的格式
Kindle Format 8 (AZW3),Kindle (AZW),TXT,PDF,MOBI,PRC原格式,HTML,DOC,DOCX,JPEG,GIF,PNG,BMP轉換格式。
自制 Kindle 電子書的小伙伴們,還在用 Word、Page、inDesign 導出制作電子書?那就太 OUT 了,用這類軟件生成的頁面源代碼較為冗余雜亂,影響電子書的質量,也不符合亞馬遜指定的規范標準,這對于追求完美的小伙伴來說是不能忍受的。
本文是翻譯自國外網友的一片文章,結合亞馬遜的 Amazon Kindle Publishing Guidelines 介紹了一下 Kindle 電子書(KF8格式)的制作流程,比較適用于有 HTML 和 CSS 基礎的小伙伴。沒有基礎的小伙伴也可以通過修改文中提供的模板輕松自制電子書。
本文由?@Kindle 伴侶翻譯,轉載請注明出處。文末附原文鏈接,如發現翻譯謬誤請不吝指正
制作 Kindle 電子書的方法有很多,相比于去依賴插件,用 KindleGen 把自己編寫的源文件轉換成 Kindle Format 8(KF8)格式,能夠讓你更精確的控制最終生成的結果。
如果你和我一樣是名 Web 設計師,已經掌握了 HTML、XML 以及 CSS,這些從零開始徒手制作 Kindle 電子書所必備的技術。那你所需要了解的就是如何將它們綜合起來運用,這樣就可以完成電子書制作啦。
一、需要準備的工具
Text editor:很多文本編輯器能夠勝任此工作,但是當我編輯特別長的內容(上千頁)時,經常遇到編輯器崩潰的情況。我通常更喜歡使用?BBEdit?編輯電子書,但?TextWrangler?應該也能滿足你的需求。
摘自?Kindle Publishing Program page?
- Amazon Kindle Publishing Guidelines:此 PDF 文檔是亞馬遜制定的制作電子書標準大綱
- KindleGen:一個命令行工具,能把源文件轉換成 Kindle Format 8 格式的電子書。
- Kindle Previewer:模擬預覽工具,可以用它來測試你制作的電子書。
- Sample Books:強烈建議看看這些包含如何添加圖片、文本、媒體文件等實例的樣書
本教程將包含一本簡單電子書制作所需要的基礎知識(其實也只是針對亞馬遜 publishing guidelines 的學習而已),還有一些樣例供參考制作更多復雜的電子式。
二、需要準備的文件
制作一本 Kindle 電子書,你需要先準備以下文件:
- HTML 格式的電子書源文件(可以是一個文件,也可以是分開的多個文件,比如每章節一個文件)
- 一個包含電子書詳細信息的 OPF 文檔(Open Packaging Format)
- 一個電子書目錄文檔 NCX(Navigation Center eXtended)
- JPEG 或 TIFF 格式的封面圖像。
- 電子書可能需要的其他一些文件(如 CSS 文件、圖片文件、字體文件等)
如果你下載了sample books,就能看到它們的這些文件是如何組織起來的。
三、格式化電子書內容:HTML
這一步很耗時,但是所有你需要做的就是把這些內容制作成網頁。你可以使用 XHTML 或者 HTML,但必須加以小心的是,設置編碼時要使用“Latin-1”(ISO-8859-1)(譯者注:中文建議使用 UTF-8 編碼)。這里有個模板,可以用來參照你生成的 HTML 文件:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"><script type="text/javascript">window.BWEUM||(BWEUM={});BWEUM.info={ "beacon":"bi-collector.oneapm.com/beacon/rum/php", "errorBeacon":"bi-collector.oneapm.com/beacon/error/php", "licenseKey":"Bmb~yqQ6MmYniMbz", "applicationID":"7829", "transactionName":"FSM7EDAzWyknUhJZWyxpDSwrPF4KDmFJeFsvI3YQLSJcOWlCA15Q", "queueTime":"0", "applicationTime":"10", "ttGuid":"6D161072232D44AE", "agentToken":"", "agent":"http://bi-collector.oneapm.com/static/js/bw-send-411.4.5.js" }</script><script type="text/javascript" src="http://bi-collector.oneapm.com/static/js/bw-loader-411.4.5.js"></script>
<title>Your Book Title</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<!-- Your book goes here -->
</body>
</html>
你可以從 inDesign(或者 Word,呵呵……)導出 HTML 文檔。如果你像我一樣,那么,你會被那些轉換來看起來亂七八糟的代碼嚇哭,你會想去清理它們。我強烈建議你去熟悉下 Grep (譯者注:縮寫來自Globally search a Regular Expression and Print,是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來)來完成這項工作。
當用 HTML 組織電子書內容時,要保持代碼的簡潔和結構化。使用 HTML 設置標題、段落、引用、列表、加粗或者斜體等。具體你可以參考?publishing guidelines中第 71 頁中全部可用的標簽列表?。
為電子書章節部分所編寫的 HTML 代碼,看起來應該像下面的這個簡略版本一樣(注意章節標題的 ID 以及結尾名為“pagebreak”的 Class 選擇器,下面我會解釋那是做什么用的):
<h2 id="ch2">Chapter Two</h2>
<div class="center"><br><img src="images/ornament.png" width="75" alt="----------"></div>
<h3>Subtitle</h3>
<blockquote>
<p>Some quote</p>
</blockquote>
<p>Lorem ipsum dolor sit amet, consectetur ... </p>
<p>Lorem ipsum dolor sit amet, consectetur ... </p>
<p>Lorem ipsum dolor sit amet, consectetur ... </p>
<p>Lorem ipsum dolor sit amet, consectetur ... </p>
<div class="center">* * *</div>
<p>Lorem ipsum dolor sit amet, consectetur ... </p>
<p>Lorem ipsum dolor sit amet, consectetur ... </p>
<p>Lorem ipsum dolor sit amet, consectetur ... </p>
<div class="pagebreak"></div>
正如你所看到的,你可以給 Div 標簽添加 Class 選擇器,甚至圖片(詳情查閱 publishing guidelines 的相關介紹)。只要記住你沒法控制讀者使用的閱讀設備尺寸,以及基礎字體。想象你自己是讀者!
四、格式化電子書內容:CSS
除非你要制作一個純圖片的電子書、兒童讀物或者漫畫書,否則你的 CSS 代碼將會非常簡單。記住 Kindle 用戶能夠設置他們想要的字體和字體大小,所以你不能對此有太多的干預。
p { margin-top: 1em; text-indent: 0em; }
h1 {margin-top: 1em}
h2 {margin: 2em 0 1em; text-align: center; font-size: 2.5em;}
h3 {margin: 0 0 2em; font-weight: normal; text-align:center; font-size: 1.5em; font-style: italic;}
.center { text-align: center; }
.pagebreak { page-break-before: always; }
注意怎樣用 em 單位設置 margin、padding 以及 font-size。這樣,間距將會根據讀者所選擇的字體大小進行相應的調整。
如果想要設置分頁符,你可以使用 CSS 屬性:page-break-before 或 page-break-after。或者,你也可以使用 Kindle 的私有標簽:。我通常在每一個章節的結尾處放置一個。
請查閱?publishing guidelines?第 75 頁中的 CSS 支持列表。
五、電子書目錄頁:HTML
在電子書的開頭,需要有一個目錄(TOC)。這是一個簡單的鏈接列表,用來跳轉到書中的不同章節。這就是為什么你需要為每個章節標題設置 ID 的原因。
我個人喜歡把 HTML 格式的 TOC 文檔制成下面這樣的列表形式:
<div id="toc">
<h2>
Table of Contents <br />
<img src="images/ornament.png" width="75" alt="----------" />
</h2>
<ul>
<li><a href="#over">Overture</a></li>
<li><a href="#pro">Prologue</a></li>
<li><a href="#ch1">Chapter 1</a></li>
<li><a href="#ch2">Chapter 2</a></li>
<li><a href="#ch3">Chapter 3</a></li>
<li><a href="#ch4">Chapter 4</a></li>
<li><a href="#ch5">Chapter 5</a></li>
<li><a href="#ch6">Chapter 6</a></li>
<li><a href="#ch7">Chapter 7</a></li>
<li><a href="#ch8">Chapter 8</a></li>
<li><a href="#epi">Epilogue</a></li>
</ul>
</div>
<div class="pagebreak"></div>
如果你把 HTML 文檔分成多個文件,確保鏈接準確地指向相應的文件和 ID。比如:
<a href="chapter2.html#ch2">Chapter 2</a>
六、電子書目錄導航:NCX
除了在 HTML 文件里包含目錄列表外,你還需要制作一個和目錄有著相同信息的 XML 文件,這個 XML 文件能夠帶來更好的閱讀體驗,因為它能引導讀者更好地瀏覽這本書。(譯者注:TOC 是能在電子書里看到的目錄頁,NCX 是指點擊“前往”顯示的那個目錄導航)
如果你下載了 sample books,你能看到每本書都包含一個這樣的文件。但這里摘選的 NCX 目錄內容來自我們上面介紹的 HTML TOC 示例:
<?xml version="1.0"?>
<!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"
"http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
<head>
</head>
<docTitle>
<text>Book title</text>
</docTitle>
<navMap>
<navPoint id="toc" playOrder="1">
<navLabel>
<text>
Table of Contents
</text>
</navLabel>
<content src="index.html#toc" />
</navPoint>
<navPoint id="over" playOrder="2">
<navLabel>
<text>
Overture
</text>
</navLabel>
<content src="index.html#over" />
</navPoint>
<navPoint id="pro" playOrder="3">
<navLabel>
<text>
Prologue
</text>
</navLabel>
<content src="index.html#pro" />
</navPoint>
<navPoint id="ch1" playOrder="4">
<navLabel>
<text>
Chapter 1
</text>
</navLabel>
<content src="index.html#ch1" />
</navPoint>
<navPoint id="ch2" playOrder="5">
<navLabel>
<text>
Chapter 2
</text>
</navLabel>
<content src="index.html#ch2" />
</navPoint>
...
</navMap>
</ncx>
七、電子書詳情: OPF
OPF是一個包含所有和電子書信息相關的 XML 文件,如 ISBN、標題、作者、封面,以及內含的文件列表。
和 NCX 文件一樣,我建議使用 sample book 中的一個 OPF 文件作為模板:
<?xml version="1.0" encoding="iso-8859-1"?>
<package unique-identifier="uid" xmlns:opf="http://www.idpf.org/2007/opf" xmlns:asd="http://www.idpf.org/asdfaf">
<metadata>
<dc-metadata xmlns:dc="http://purl.org/metadata/dublin_core" xmlns:oebpackage="http://openebook.org/namespaces/oeb-package/1.0/">
<dc:Title>Book title</dc:Title>
<dc:Language>en</dc:Language>
<dc:Creator>Author name</dc:Creator>
<dc:Copyrights>Copyright owner</dc:Copyrights>
<dc:Publisher>Publisher</dc:Publisher>
<x-metadata>
<EmbeddedCover>images/cover.jpg</EmbeddedCover>
</x-metadata>
</dc-metadata>
</metadata>
<manifest>
<item id="content" media-type="text/x-oeb1-document" href="index.html#toc"></item>
<item id="ncx" media-type="application/x-dtbncx+xml" href="toc.ncx"/>
<item id="text" media-type="text/x-oeb1-document" href="index.html#over"></item>
<item id="Images" media-type="text/x-oeb1-document" href="Images.html"></item>
<item id="background" media-type="text/x-oeb1-document" href="background.html"></item>
</manifest>
<spine toc="ncx">
<itemref idref="content"/>
<itemref idref="text"/>
<itemref idref="Images"/>
<itemref idref="background"/>
</spine>
<guide>
<reference type="toc" title="Table of Contents" href="toc.html"/>
<reference type="text" title="Book" href="index.html"/>
</guide>
</package>
有一些 book samples 的 OPF 文件含有詳細的注釋,但是上面這個 OPF 示例應該能讓你對其所包含的信息有一個大概了解:
- Metadata:一些如書名、作者、出版社和裝幀之類的信息。在 OPF 網站上有一個很全的?Metadata 列表供你引用。
- Manifest:包含所有文件的列表(如 HTML 和 NCX 文件)。我建議最好也列出所有的 CSS 和 圖片文件,這樣生成 Kindle 電子書時,任何不存在的文件(或拼寫錯誤的文件)都會出現警告提示。
- Spine:HTML 文件列表,按照它們被閱讀的先后順序排列。
- Guide:這個元素指向你書中的關鍵項,比如 TOC(目錄),以及在有致辭的情況下,正文的開始位置,等等。
八、封面圖片
就像你在 OPF 文件里能夠看到的,你需要包含封面圖片的相關信息。圖片規格如下:
- JPEG 或 TIFF 格式
- 優先使用 1.6:1 的長寬比
- 最小尺寸:寬 625 像素,長 1000 像素
- 最佳尺寸:寬 1563 像素,長 2500 像素
九、生成 Kindle 電子書
現在你準備好了所有用來創建 mobi 格式電子書的必要文件。這時就輪到 KindleGen 上場了。
在下載完適用于你系統的?downloand KindleGen?后,你需要用命令行運行它。下載到的 KindleGen 包含使用說明,不過命令看起來像下面這樣:
/Applications/kindlegen /Users/me/Documents/Book/book.opf
如果你用的是 Mac 系統,最簡單的方法是打開 Terminal(終端),把 KindleGen 拖放到終端窗口上,再把 OPF 文件拖放到終端窗口上,然后按一下鍵盤上的 Enter(回車)。KindleGen 就會開始運行了,不出意外的話,在 OPF 所在目錄下就會生成一個 mobi 文件。(譯者注:其實 Windows 系統中的命令提示符也可以這樣干)
你可能會遇到一些不可預知的錯誤,這可能和 TOC 文件中的錯誤鏈接(通常是 ID 或鏈接的拼寫錯誤)以及缺失的文件(可能是名稱的拼寫錯誤)有關。
十、首戰告捷!
一旦你有了 mobi 格式的電子書,就可以用 Kindle Preview,任何電子書閱讀器,甚至真正的 Kindle 設備直接打開它。
如果你對制作結果很滿意,可以把它上傳到?Kindle Store!(譯者注:這里是指美國亞馬遜。)
譯者注:經過測試,用本文方法制作的電子書,通過郵件附件的方式推送到亞馬遜云端,會出現不顯示封面的問題。查找了很多資料,也沒有找到解決方法,猜測原因可能是 KindleGen 的一個 Bug 引起的。因為通過 mobi 拆分工具拆分后,發現會生成 mobi7 和 mobi8 兩個文件夾,在 mobi7 文件夾內能找到封面圖片,但是 mobi8 文件夾內卻無法找到,可能就是這個原因引起的,但目前還沒找到確切的原因。如果你有解決方法請一定留言告知,謝謝!
翻譯水平有限,如有錯誤請及時指正,謝謝。
翻譯:Sherry, Runbing