Crate epub[−][src]
EPUB library lib to read and navigate throught 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 metatada
Metadata is a HashMap storing all metadata defined in the epub
let title = doc.mdata("title"); assert_eq!(title.unwrap(), "Todo es mío");
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!(21, doc.resources.len()); let tpage = doc.resources.get("titlepage.xhtml"); assert_eq!(tpage.unwrap().0, Path::new("OEBPS/Text/titlepage.xhtml")); assert_eq!(tpage.unwrap().1, "application/xhtml+xml");
Navigating usint the spine
Spine is a Vec
assert_eq!(17, doc.spine.len()); assert_eq!("titlepage.xhtml", doc.spine[0]);
Navigation using the doc internal state
use epub::doc::EpubDoc; let doc = EpubDoc::new("test.epub"); let mut doc = doc.unwrap(); assert_eq!(0, doc.get_current_page()); 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_page(2); assert_eq!("001.xhtml", doc.get_current_id().unwrap()); assert_eq!(2, doc.get_current_page()); assert!(doc.set_current_page(50).is_err()); // doc.get_current() will return a Vec<u8> with the current page content // doc.get_current_str() will return a String with the current page content
Getting the cover
ⓘThis example is not tested
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. |