EPUB入门教程

简介

EPUB是电子书格式,其内容由XHTML文件构成,排版样式由CSS指定。

Hello, EPUB

首先,不讲任何理论,直接动手做一个epub文件,其内容为“Hello, EPUB”。

  1. XHTML文件

    创建hello.xhtml,内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
      "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    	  	<title>Hello EPUB</title>
    	</head>
    
    	<body>
    		Hello, EPUB!
    	</body>
    
    </html>
    

    接着只要将其封装为EPUB格式,就能在EPUB阅读器上看啦。

  2. 封装EPUB

    创建文件夹book,其结构如下:

    book/
    +---mimetype            % 类型说明文件,告诉阅读器这是一个EPUB书;照搬即可
    |
    +---META-INF/           % 用于告诉阅读器content.opf在哪;照搬即可
    |   +---container.xml
    |
    +---OEBPS/              % 电子书的元数据、内容、资源等的所在地
        +---content.opf     % 元数据和资源的清单,按需编辑
        +---toc.ncx         % 目录,按需编辑
        +---hello.xhtml     % 书的内容,按需编辑
    
    • mimetype

      mimetype是类型说明文件,告诉阅读器这是一个EPUB书,其内容如下:

      application/epub+zip

      mimetype在所有EPUB书中都一样,照搬即可。

    • META-INF/container.xml

      container.xml用于告诉阅读器opf文件(资源清单文件,通常是content.opf)在哪,其内容如下:

      <?xml version="1.0"?>
      <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
          <rootfiles>
              <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
         </rootfiles>
      </container>

      container.xml在所有EPUB中都一样,照搬即可。

    • OEBPS/content.opf

      content.opf是电子书的元数据和资源的汇总清单,其内容如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <package xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookID" version="2.0">
          <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
              <dc:title>我的第一本书</dc:title>
              <dc:creator opf:role="aut">lithdo</dc:creator>
              <dc:publisher>lithdo.github.io</dc:publisher>
              <dc:identifier id="BookID" opf:scheme="UUID">015ffaec-9340-42f8-b163-a0c5ab7d0611</dc:identifier>
          </metadata>
      
          <manifest>
              <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
              <item id="hello" href="hello.xhtml" media-type="application/xhtml+xml"/>
          </manifest>
      
          <spine toc="ncx">
              <itemref idref="hello"/>
          </spine>
      </package>
      
    • OEBPS/toc.ncx

      toc.ncx是目录,阅读器根据它来显示目录栏,其内容入下:

      <?xml version="1.0" encoding="UTF-8"?>
      <!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>
              <meta name="dtb:uid" content="015ffaec-9340-42f8-b163-a0c5ab7d0611"/>
          </head>
      
          <docTitle>
              <text>我的第一本书</text>
          </docTitle>
      
          <navMap>
              <navPoint id="navPoint-1" playOrder="1">
                  <navLabel><text>Hello, EPUB</text></navLabel>
                  <content src="hello.xhtml"/>
              </navPoint>
          </navMap>
      </ncx>
      

    创建book.zip压缩包,依次将mimetype、META-INF和OEBPS放入压缩包内。注意:mimetype必须第一个放入压缩包。

    现在所有的工作完成了,只需将book.zip改名为book.epub,就可以用epub阅读器浏览啦。