Skip to main content

Epub

Struct Epub 

Source
pub struct Epub {
    pub metadata: Metadata,
    pub toc: Vec<TocEntry>,
    pub pages: Vec<Page>,
    pub images: Vec<Image>,
}
Expand description

A parsed EPUB e-book representation.

This struct contains all the extracted data from an EPUB file including:

  • Metadata (title, author, publisher, etc.)
  • Table of contents (hierarchical navigation)
  • Text content (pages in reading order)
  • Images (including cover image)

§Example

use epub_parser::Epub;
use std::path::Path;

let epub = Epub::parse(Path::new("book.epub"))?;

// Access metadata
if let Some(title) = &epub.metadata.title {
    println!("Title: {}", title);
}

// Access all pages
for page in &epub.pages {
    println!("Page {}: {} chars", page.index, page.content.len());
}

// Access images
for image in &epub.images {
    println!("Image: {} ({})", image.href, image.media_type);
}

Fields§

§metadata: Metadata

The Dublin Core metadata extracted from the EPUB.

§toc: Vec<TocEntry>

The hierarchical table of contents from the NCX file.

§pages: Vec<Page>

The text content of each page in reading order.

§images: Vec<Image>

All images found in the EPUB (including cover).

Implementations§

Source§

impl Epub

Source

pub fn parse(path: &Path) -> Result<Self, Error>

Parse an EPUB file from a file path.

§Arguments
  • path - The path to the EPUB file.
§Returns

Returns Ok(Epub) on success, or an Error if parsing fails.

§Errors

This function will return an error if:

  • The file does not exist
  • The file is not a valid ZIP archive
  • The EPUB structure is invalid
§Example
use epub_parser::Epub;
use std::path::Path;

let epub = Epub::parse(Path::new("book.epub"))?;
println!("Parsed: {}", epub.metadata.title.unwrap_or_default());
Source

pub fn parse_from_buffer(buffer: &[u8]) -> Result<Self, Error>

Parse an EPUB file from a byte buffer.

This is useful when you have the EPUB data in memory, for example when downloading from a network or reading from a database.

§Arguments
  • buffer - The raw bytes of the EPUB file.
§Returns

Returns Ok(Epub) on success, or an Error if parsing fails.

§Example
use epub_parser::Epub;

let bytes = std::fs::read("book.epub")?;
let epub = Epub::parse_from_buffer(&bytes)?;
println!("Parsed: {}", epub.metadata.title.unwrap_or_default());

Trait Implementations§

Source§

impl Debug for Epub

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Epub

§

impl RefUnwindSafe for Epub

§

impl Send for Epub

§

impl Sync for Epub

§

impl Unpin for Epub

§

impl UnwindSafe for Epub

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.