闲来无事,想起高中时候爱看的杂志,于是写了个脚本,把网站上的杂志下载下来了,无奈都是分割的图片,一页被分成了20多块,为了阅读方便,便制作了网页版,顺便做成epub格式的电子书
先了解下EPUB
的目录结构
随便将手头的一个epub
结尾的电子书📚解压,都可以得到下面👇所示的目录结构
mimetype
: 这个文件内容是application/epub+zip
, 是用来声明电子书格式的.META-INF
: 用来说明特定文件的存放信息, 其中container.xml
这个文件是必须的.OEBPS
: 用来存放电子书📚中的各种资源, 其中content.opf
和toc.ncx
是必须的.
创建通用的模板文件
mimetype
里面的内容
application/epub+zip
META-INF/container.xml
里面的内容
<?xml version="1.0" encoding="UTF-8"?>
<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>
创建OEBPS
及其子文件
mkdir OEBPS
cd OEBPS
touch content.opf toc.ncx
在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:language>语言</dc:language>
<dc:rights>版权</dc:rights>
<dc:creator opf:role="aut">作者</dc:creator>
<dc:publisher>出版者</dc:publisher>
<dc:identifier id="BookID" opf:scheme="UUID">出版物唯一标识码</dc:identifier>
</metadata>
<manifest>
<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
<item id="sample.png" href="sample.png" media-type="image/png"/>
<item id="page-template.xpgt" href="Styles/page-template.xpgt" media-type="application/vnd.adobe-page-template+xml"/>
<item id="chap01.xhtml" href=" 01.xhtml" media-type="application/xhtml+xml"/>
<item id="chap02.xhtml" href=" 02.xhtml" media-type="application/xhtml+xml"/>
<item id="title_page.xhtml" href="Text/title_page.xhtml" media-type="application/xhtml+xml"/>
</manifest>
<spine toc="ncx">
<itemref idref="title_page.xhtml"/>
<itemref idref="01.xhtml"/>
<itemref idref="02.xhtml"/>
</spine>
</package>
不建议手动修改这些东西, 推荐修改现成的模板
打包, 预览
zip -r book.epub *
打开book.epub