User Guide

First of all, should have a book object:

epub3:

from epubaker import Epub3

book = Epub3()

epub2:

from epubaker import Epub2

book = Epub2()

Add files

Then, put a page into the book:

from epubaker import File

page1_path = 'p1.xhtml'
book.files[page1_path] = File(open('page1.xhtml', 'rb').read())

Spine

In print book, pages is just papers, when you open a book, you can see the pages. But epub book can stone lot of type of media, like audio, picture, fonts, and other things. Lot media is only be a part of a page, it not show up direct. So you have to let the book reader software knows what pages your want to show, and the show-pages order:

from epubaker import Joint

book.spine.append(Joint(page1_path))

That’s it! That’s minimum requirements of a useful book.

You may notise that we can’t locating that page because we didn’t make table of contents like a print book, do this to fix:

from epubaker import Section

book.toc.append(Seciton('Chapter I', page1_path))

Metadata

Now, we want reader know what’s the title of this book, the identifier of this book and language of this book:

from epubaker.metas import Title, Identifier, Language

book.metadata.append(Title('simple epub book'))
book.metadata.append(Language('en'))
book.metadata.append(Identifier('any_string_different_from_other_identifier_of_other_book'))

epub3 need modified date:

from epubaker.tools import w3c_utc_date
from epubaker.metas import get_dcterm

book.metadata.append(get_dcterm('modified')(w3c_utc_date()))

Cover

Add a image first:

book.files['cover.png'] = File(open('cover.png', 'rb').read())

Let reader know which image is the cover:

epub3:

book.cover_path = 'cover.png'

epub2:

from epubaker.metas import Cover
book.metadata.append(Cover('cover.png'))

If the reader or bookshelf didn’t show the cover, you may want to make a xhtml page from the cover image, and put it as the first of the book pages:

cover_page_file = book.addons_make_image_page(image_path='cover.png')
book.files['cover.xhtml'] = cover_page_file
book.spine.insert(0, Joint('cover.xhtml'))

Write it!

book.write('simple_book.epub')