1
0
Fork 0
mirror of https://github.com/futurepress/epub.js.git synced 2025-10-03 14:59:18 +02:00
JS epub parser/reader
Find a file
2014-01-06 23:57:07 -08:00
books@ab9755a747 Added book.getCurrentLocationCfi 2013-12-03 13:01:39 -08:00
build merged with master 2014-01-06 22:26:36 -08:00
demo merged with master 2014-01-06 22:26:36 -08:00
documentation Updated readmes, added replace.js, added built libs 2013-07-23 09:23:55 -07:00
examples Views -> Controllers, Moved previousLocationCfi logic to Reader, Bookmarks in Reader 2014-01-02 20:32:51 -08:00
hooks Refactored Demo Code, New Jquery, RSVP versions, font icons 2013-12-31 13:41:29 -08:00
libs Refactored Demo Code, New Jquery, RSVP versions, font icons 2013-12-31 13:41:29 -08:00
reader Added URI method, check chapter base on replace 2014-01-06 22:18:47 -08:00
src merged with master 2014-01-06 22:26:36 -08:00
tests updated readme 2014-01-06 23:54:21 -08:00
tools Added beta script that generates appcache file from opf or epub files. 2013-07-19 14:06:57 -07:00
.gitignore Added books submod 2013-11-05 12:42:08 -08:00
.gitmodules updated submodules url for books 2013-11-17 00:05:24 -08:00
.jshintrc jshint fixes 2013-11-17 20:28:50 -08:00
.nojekyll Turned of Jekyll 2013-11-16 23:48:19 -08:00
Gruntfile.js Views -> Controllers, Moved previousLocationCfi logic to Reader, Bookmarks in Reader 2014-01-02 20:32:51 -08:00
index.html added documentup index.html 2013-07-23 09:35:37 -07:00
license Create license 2013-04-12 11:51:31 -07:00
package.json Reversed order of Nav TOC items 2013-11-16 23:23:46 -08:00
README.md fixed spelling in readme 2014-01-06 23:57:07 -08:00
server.js white space cleanup 2013-10-25 19:59:02 -07:00

Epub.js

FuturePress Views

Epub.js is a JavaScript library for rendering ePub documents in the browser, across many devices.

Epub.js provides an interface for common ebook functions (such as rendering, persistence and pagination) without the need to develop a dedicated application or plugin.

Try it while reading Moby Dick

Why EPUB

Why EPUB

The EPUB standard is a widely used and easily convertible format. Many books are currently in this format, and it is convertible to many other formats (such as PDF, Mobi and iBooks).

An unzipped ePUB3 is a collection of HTML5 files, CSS, images and other media just like any other website. However, it enforces a schema of book components, which allows us to render a book and its parts based on a controlled vocabulary.

More specifically, the ePUB schema standardizes the table of contents, provides a manifest that enables the caching of the entire book, and separates the storage of the content from how its displayed.

Getting Started

Get the minified code from the build folder:

<script src="../build/epub.min.js"></script>

If you plan on using compressed (zipped) epubs (any .epub file) include the minified version of zip.js

Also make sure to set EPUBJS.filePath to the directory containing inflate.js

<!-- Zip JS -->
<script src="/build/libs/zip.min.js"></script>  

<script>
    EPUBJS.filePath = "../build/libs/";
</script>

Setup a element to render to:

<div onclick="Book.prevPage();"></div>
<div id="area"></div>
<div onclick="Book.nextPage();"></div>

Create the new ePub, and then render it to that element:

<script>
	var Book = ePub("url/to/book/", { restore: true });
	Book.renderTo("area");
</script>

See the Documentation to view events and methods for getting the books contents.

The Examples are likely the best place to learn how to use the library.

Recent Updates

  • book.goto() and book.gotoCfi() can be called before book.renderTo() to start rendering at a previous page location.

  • Moved page position restoring from local storage out of main library and into the demo reader.

  • Rewritten Demo Reader

  • Started Developer Mailing List

  • Opened our public IRC, Server: freenode.net Channel: #epub.js

  • Started Documentation

  • ePub("book.epub", options) returns a new EPUBJS.Book(options),

  • EPUBJS.Book now only takes a options object, set bookPath with ePub("path/to/book/") or new EPUBJS.Book({ bookPath : "path/to/book/"})

  • Examples

  • Tests

Running Locally

install node.js

install the project dependences with npm

npm install

then you can run the reader locally with the command

node server.js
  • dev.html will pull from the source files and should be used during development.
  • index.html will use the minified production libraries in the dist/ folder.

Testing

Once you start a server you can run the QUnit tests at http://localhost:8080/tests/

You can download the test books from https://github.com/futurepress/books by running:

git submodule update --init --recursive

Then you can pull the latest with:

git submodule foreach git pull origin master

Building for Distribution

Builds are concatenated and minified using gruntjs

To generate a new build run

grunt

Hooks

Similar to a plugins, Epub.js implements events that can be "hooked" into. Thus you can interact with and manipulate the contents of the book.

Examples of this functionality is loading videos from YouTube links before displaying a chapters contents or implementing annotation.

Hooks require a event to latch onto and a callback for when they are finished.

Example hook:

EPBUJS.Hooks.register("beforeChapterDisplay").example = function(callback, render){
    
    var elements = render.doc.querySelectorAll('[video]'),
        items = Array.prototype.slice.call(elements);
    
    items.forEach(function(item){
      //-- do something with the video item
    }
    
    if(callback) callback();
		
}

Additional Resources

Epub.js Developer Mailing List

IRC Server: freenode.net Channel: #epub.js

Follow us on twitter: @Epubjs

Other

EPUB is a registered trademark of the IDPF.