[关闭]
@mdjsjdq 2015-12-01T09:17:26.000000Z 字数 7588 阅读 10523

遵循亚马逊标准!Kindle 电子书专业制作教程

Kindle


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 电子书所必备的技术。那你所需要了解的就是如何将它们综合起来运用,这样就可以完成电子书制作啦。

目录

一、需要准备的工具

  1. Text editor:很多文本编辑器能够胜任此工作,但是当我编辑特别长的内容(上千页)时,经常遇到编辑器崩溃的情况。我通常更喜欢使用 BBEdit 编辑电子书,但 TextWrangler 应该也能满足你的需求。
  2. 摘自 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 文件:

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="iso-8859-1" />
  5. <title>Your Book Title</title>
  6. <link rel="stylesheet" href="style.css" type="text/css" />
  7. </head>
  8. <body>
  9. <!-- Your book goes here -->
  10. </body>
  11. </html>

可以从 inDesign(或者 Word,呵呵……)导出 HTML 文档。如果你像我一样,那么,你会被那些转换来看起来乱七八糟的代码吓哭,你会想去清理它们。我强烈建议你去熟悉下 Grep (译者注:缩写来自Globally search a Regular Expression and Print,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来)来完成这项工作。

用 HTML 组织电子书内容时,要保持代码的简洁和结构化。使用 HTML 设置标题、段落、引用、列表、加粗或者斜体等。具体你可以参考 publishing guidelines中第 71 页中全部可用的标签列表

电子书章节部分所编写的 HTML 代码,看起来应该像下面的这个简略版本一样(注意章节标题的 ID 以及结尾名为“pagebreak”的 Class 选择器,下面我会解释那是做什么用的):

  1. <h2 id="ch2">Chapter Two</h2>
  2. <div class="center"><br><img src="images/ornament.png" width="75" alt="----------"></div>
  3. <h3>Subtitle</h3>
  4. <blockquote>
  5. <p>Some quote</p>
  6. </blockquote>
  7. <p>Lorem ipsum dolor sit amet, consectetur ... </p>
  8. <p>Lorem ipsum dolor sit amet, consectetur ... </p>
  9. <p>Lorem ipsum dolor sit amet, consectetur ... </p>
  10. <p>Lorem ipsum dolor sit amet, consectetur ... </p>
  11. <div class="center">* * *</div>
  12. <p>Lorem ipsum dolor sit amet, consectetur ... </p>
  13. <p>Lorem ipsum dolor sit amet, consectetur ... </p>
  14. <p>Lorem ipsum dolor sit amet, consectetur ... </p>
  15. <div class="pagebreak"></div>

如你所看到的,你可以给 Div 标签添加 Class 选择器,甚至图片(详情查阅 publishing guidelines 的相关介绍)。只要记住你没法控制读者使用的阅读设备尺寸,以及基础字体。想象你自己是读者!

四、格式化电子书内容:CSS

非你要制作一个纯图片的电子书、儿童读物或者漫画书,否则你的 CSS 代码将会非常简单。记住 Kindle 用户能够设置他们想要的字体和字体大小,所以你不能对此有太多的干预。

  1. p { margin-top: 1em; text-indent: 0em; }
  2. h1 {margin-top: 1em}
  3. h2 {margin: 2em 0 1em; text-align: center; font-size: 2.5em;}
  4. h3 {margin: 0 0 2em; font-weight: normal; text-align:center; font-size: 1.5em; font-style: italic;}
  5. .center { text-align: center; }
  6. .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 文档制成下面这样的列表形式:

  1. <div id="toc">
  2. <h2>
  3. Table of Contents <br />
  4. <img src="images/ornament.png" width="75" alt="----------" />
  5. </h2>
  6. <ul>
  7. <li><a href="#over">Overture</a></li>
  8. <li><a href="#pro">Prologue</a></li>
  9. <li><a href="#ch1">Chapter 1</a></li>
  10. <li><a href="#ch2">Chapter 2</a></li>
  11. <li><a href="#ch3">Chapter 3</a></li>
  12. <li><a href="#ch4">Chapter 4</a></li>
  13. <li><a href="#ch5">Chapter 5</a></li>
  14. <li><a href="#ch6">Chapter 6</a></li>
  15. <li><a href="#ch7">Chapter 7</a></li>
  16. <li><a href="#ch8">Chapter 8</a></li>
  17. <li><a href="#epi">Epilogue</a></li>
  18. </ul>
  19. </div>
  20. <div class="pagebreak"></div>

果你把 HTML 文档分成多个文件,确保链接准确地指向相应的文件和 ID。比如:

  1. <a href="chapter2.html#ch2">Chapter 2</a>

六、电子书目录导航:NCX

了在 HTML 文件里包含目录列表外,你还需要制作一个和目录有着相同信息的 XML 文件,这个 XML 文件能够带来更好的阅读体验,因为它能引导读者更好地浏览这本书。(译者注:TOC 是能在电子书里看到的目录页,NCX 是指点击“前往”显示的那个目录导航)

果你下载了 sample books,你能看到每本书都包含一个这样的文件。但这里摘选的 NCX 目录内容来自我们上面介绍的 HTML TOC 示例:

  1. <?xml version="1.0"?>
  2. <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"
  3. "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
  4. <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
  5. <head>
  6. </head>
  7. <docTitle>
  8. <text>Book title</text>
  9. </docTitle>
  10. <navMap>
  11. <navPoint id="toc" playOrder="1">
  12. <navLabel>
  13. <text>
  14. Table of Contents
  15. </text>
  16. </navLabel>
  17. <content src="index.html#toc" />
  18. </navPoint>
  19. <navPoint id="over" playOrder="2">
  20. <navLabel>
  21. <text>
  22. Overture
  23. </text>
  24. </navLabel>
  25. <content src="index.html#over" />
  26. </navPoint>
  27. <navPoint id="pro" playOrder="3">
  28. <navLabel>
  29. <text>
  30. Prologue
  31. </text>
  32. </navLabel>
  33. <content src="index.html#pro" />
  34. </navPoint>
  35. <navPoint id="ch1" playOrder="4">
  36. <navLabel>
  37. <text>
  38. Chapter 1
  39. </text>
  40. </navLabel>
  41. <content src="index.html#ch1" />
  42. </navPoint>
  43. <navPoint id="ch2" playOrder="5">
  44. <navLabel>
  45. <text>
  46. Chapter 2
  47. </text>
  48. </navLabel>
  49. <content src="index.html#ch2" />
  50. </navPoint>
  51. ...
  52. </navMap>
  53. </ncx>

七、电子书详情: OPF

OPF是一个包含所有和电子书信息相关的 XML 文件,如 ISBN、标题、作者、封面,以及内含的文件列表。

和 NCX 文件一样,我建议使用 sample book 中的一个 OPF 文件作为模板:

  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <package unique-identifier="uid" xmlns:opf="http://www.idpf.org/2007/opf" xmlns:asd="http://www.idpf.org/asdfaf">
  3. <metadata>
  4. <dc-metadata xmlns:dc="http://purl.org/metadata/dublin_core" xmlns:oebpackage="http://openebook.org/namespaces/oeb-package/1.0/">
  5. <dc:Title>Book title</dc:Title>
  6. <dc:Language>en</dc:Language>
  7. <dc:Creator>Author name</dc:Creator>
  8. <dc:Copyrights>Copyright owner</dc:Copyrights>
  9. <dc:Publisher>Publisher</dc:Publisher>
  10. <x-metadata>
  11. <EmbeddedCover>images/cover.jpg</EmbeddedCover>
  12. </x-metadata>
  13. </dc-metadata>
  14. </metadata>
  15. <manifest>
  16. <item id="content" media-type="text/x-oeb1-document" href="index.html#toc"></item>
  17. <item id="ncx" media-type="application/x-dtbncx+xml" href="toc.ncx"/>
  18. <item id="text" media-type="text/x-oeb1-document" href="index.html#over"></item>
  19. <item id="Images" media-type="text/x-oeb1-document" href="Images.html"></item>
  20. <item id="background" media-type="text/x-oeb1-document" href="background.html"></item>
  21. </manifest>
  22. <spine toc="ncx">
  23. <itemref idref="content"/>
  24. <itemref idref="text"/>
  25. <itemref idref="Images"/>
  26. <itemref idref="background"/>
  27. </spine>
  28. <guide>
  29. <reference type="toc" title="Table of Contents" href="toc.html"/>
  30. <reference type="text" title="Book" href="index.html"/>
  31. </guide>
  32. </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 包含使用说明,不过命令看起来像下面这样:

  1. /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 文件夹内却无法找到,可能就是这个原因引起的,但目前还没找到确切的原因。如果你有解决方法请一定留言告知,谢谢!


翻译水平有限,如有错误请及时指正,谢谢。

原文:www.aliciaramirez.com

翻译:Sherry, Runbing

点击可以关注我的新浪微博

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注