Thanks to visit codestin.com
Credit goes to docs.rs

Skip to main content

Crate epub

Crate epub 

Source
Expand description

EPUB library lib to read and navigate through an epub file contents

§Examples

§Opening

use epub::doc::EpubDoc;
let doc = EpubDoc::new("test.epub");
assert!(doc.is_ok());
let doc = doc.unwrap();

§Getting doc metadata

Metadata is a HashMap storing all metadata defined in the epub

let language = doc.mdata("language");
assert_eq!(language.unwrap().value, "es");

§Accessing resources

In the resources var is stored each resource defined in the epub indexed by the id and with the full internal path and mimetype. It’s a HashMap<a: String, (b: String, c: String)> where a is the resource id, b is the resource full path and c is the resource mimetype

assert_eq!(23, doc.resources.len());
let tpage = doc.resources.get("titlepage.xhtml");
assert_eq!(tpage.unwrap().path, Path::new("OEBPS/Text/titlepage.xhtml"));
assert_eq!(tpage.unwrap().mime, "application/xhtml+xml");

Spine is a Vec<String> storing the epub spine as resources ids

assert_eq!(17, doc.spine.len());
assert_eq!("titlepage.xhtml", doc.spine[0].idref);
use epub::doc::EpubDoc;
let doc = EpubDoc::new("test.epub");
let mut doc = doc.unwrap();
assert_eq!(0, doc.get_current_chapter());
assert_eq!("application/xhtml+xml", doc.get_current_mime().unwrap());

doc.go_next();
assert_eq!("000.xhtml", doc.get_current_id().unwrap());
doc.go_next();
assert_eq!("001.xhtml", doc.get_current_id().unwrap());
doc.go_prev();
assert_eq!("000.xhtml", doc.get_current_id().unwrap());

doc.set_current_chapter(2);
assert_eq!("001.xhtml", doc.get_current_id().unwrap());
assert_eq!(2, doc.get_current_chapter());
assert!(!doc.set_current_chapter(50));

// doc.get_current() will return a Vec<u8> with the current chapter content
// doc.get_current_str() will return a String with the current chapter content

§Getting the cover

use std::fs;
use std::io::Write;
use epub::doc::EpubDoc;

let doc = EpubDoc::new("test.epub");
assert!(doc.is_ok());
let mut doc = doc.unwrap();

let cover_data = doc.get_cover().unwrap();

let f = fs::File::create("/tmp/cover.png");
assert!(f.is_ok());
let mut f = f.unwrap();
let resp = f.write_all(&cover_data);

Modules§

archive
Manages the zip component part of the epub doc.
doc
Manages the epub doc.