rbook

Crates.io Documentation

An ebook library that supports parsing and reading the epub format.

Usage

Including default features: toml [dependencies] rbook = "0.2.0" Excluding default features: toml [dependencies] rbook = { version = "0.2.0", 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: ```rust use rbook::Ebook;

fn main() { // Creating an epub instance let epub = rbook::Epub::new("example.epub").unwrap();

// Retrieving the title
println!("Title = {}", epub.metadata().title().unwrap().value());

// Creating a reader instance
let mut reader = epub.reader();

// Printing the contents of each page
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: ```rust use rbook::Ebook;

fn main() { let epub = rbook::Epub::new("example.epub").unwrap();

// Retrieving the first creator metadata element
let creator = epub.metadata().creators().unwrap().first().unwrap();
assert_eq!("John Doe", creator.value());

// Retrieving an attribute
let id = creator.get_attribute("id").unwrap();
assert_eq!("creator01", id);

// Retrieving a child element
let role = creator.get_child("role").unwrap();
assert_eq!("aut", role.value());

let scheme = role.get_attribute("scheme").unwrap();
assert_eq!("marc:relators", scheme);

} ```

Extracting images: ```rust use rbook::Ebook;

fn main() { let epub = rbook::Epub::new("example.epub").unwrap();

let img_elements = epub.manifest().images().unwrap();

// Create new directory to store extracted images
let dir = Path::new("extracted_images");
fs::create_dir(&dir).unwrap();

for img_element in img_elements {
    let img_href = img_element.value();

    // Retrieve image contents
    let img = epub.read_bytes_file(img_href).unwrap();

    // Retrieve file name from image href
    let file_name = Path::new(img_href).file_name().unwrap();

    // Create new file
    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.