Uses EPUB.js to parse and render epubs on iOS and Android using React Native.
To use the components in your own app install via npm or yarn
npm install --save epubjs-rn
then link the required libraries with
react-native link react-native-static-server && react-native link react-native-webview && react-native link react-native-zip-archive && RNFB_ANDROID_PERMISSIONS=true react-native link rn-fetch-blob && react-native link react-native-orientation
then require the components
you need
import { Epub } from 'epubjs-rn';
Then you can add the reader element in your code:
<Epub src={"https://s3.amazonaws.com/epubjs/books/moby-dick/OPS/package.opf"}
flow={"paginated"} />
src
: the url of your epub to renderflow
:paginated
:scrolled
- (default to false, which presents a scrolling view)location
: Can be an EPUBCFI, Chapter Url or Spine PositiononLocationChange
: Function called on every page change, reports current CFIonLocationsReady
: Function called once the locations has been generated. Returns the locations object.onViewAdded
: Function called once a view has been added to the screen.beforeViewRemoved
: Function called before a view will be removed from the screen.width
: width (int) of the Epub Renditionheight
: height (int) of the Epub RenditiononReady
: Function called once book has been opened. Returns the book objectthemes
: JSON object of themes names and css properties to be appliedtheme
: Name of the theme to apply, such aslight
fontSize
: CSS override for font size of theme, needs a css unitfont
: CSS override for font familystylesheet
: Link to css stylesheet containing themesscript
: Url for a javascript file to be injected into the viewminSpreadWidth
: cut off width for spreadsgap
: gap (int) between columns / pages
To unzip compressed epubs locally and use http to stream them to epubjs,
you will want to use the Streamer
class to manage the files and start a StaticServer.
An example of this method is provided in the example app.
import { Epub, Streamer } from "epubjs-rn";
let streamer = new Streamer();
streamer.start("8899")
.then((origin) => {
console.log("Served from:", origin)
return this.streamer.get("https://s3.amazonaws.com/epubjs/books/moby-dick.epub");
})
.then((src) => {
console.log("Loading from:", src);
return this.setState({src});
});
Install from Yarn
yarn install -g react-native-cli
yarn
Then start the iOS or Android App
react-native run-ios
react-native run-android
EPUB is a registered trademark of the IDPF.