rbook

An ebook library that supports parsing and reading the epub format.
Usage
Including default features:
[dependencies]
rbook = "0.1.5"
Excluding default features:
[dependencies]
rbook = { version = "0.1.5", default-features = false }
Default features are the following:
reader: Enables reading of the ebook file by file
statistics: Enables word/character counting
Examples
Other examples can be found in the 'tests' directory.
Opening and reading an epub file:
use rbook::Ebook;
fn main() {
let epub = rbook::Epub::new("example.epub").unwrap();
println!("Title = {}", epub.metadata().title().unwrap().value());
let mut reader = epub.reader();
while let Some(content) = reader.next_page() {
let media_type = content.get(ContentType::Type).unwrap();
assert_eq!("application/xhtml+xml", media_type);
println!("{}", content);
}
}
Accessing metadata elements and attributes:
use rbook::Ebook;
fn main() {
let epub = rbook::Epub::new("example.epub").unwrap();
let creator = epub.metadata().creators().unwrap().first().unwrap();
let id = creator.get_attribute("id").unwrap();
let role = creator.get_child("role").unwrap();
let scheme = role.get_attribute("scheme").unwrap();
assert_eq!("id", id.name());
assert_eq!("creator01", id.value());
assert_eq!("aut", role.value());
assert_eq!("marc:relators", scheme.value());
}
Extracting images:
use rbook::Ebook;
fn main() {
let epub = rbook::Epub::new("example.epub").unwrap();
let img_elements = epub.manifest().images().unwrap();
let dir = Path::new("extracted_images");
fs::create_dir(&dir).unwrap();
for img_element in img_elements {
let img_href = img_element.value();
let img = epub.read_bytes_file(img_href).unwrap();
let file_name = Path::new(img_href).file_name().unwrap();
let mut file = File::create(dir.join(file_name)).unwrap();
file.write_all(&img).unwrap();
}
}
Sample ebooks
Sample ebooks in the 'tests/ebooks' directory are provided as is from
IDPF under the
CC-BY-SA 3.0 license.