use thiserror::Error;
pub type PdfResult<T> = Result<T, PdfError>;
#[derive(Debug, Error)]
pub enum PdfError {
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("parse error at offset {offset}: {message}")]
Parse { offset: u64, message: String },
#[error("invalid object: {0}")]
InvalidObject(String),
#[error("invalid page: {0}")]
InvalidPage(String),
#[error("font error: {0}")]
Font(String),
#[error("image error: {0}")]
Image(String),
#[error("layout error: {0}")]
Layout(String),
#[error("render error: {0}")]
Render(String),
#[error("security error: {0}")]
Security(String),
#[error("not implemented: {0}")]
NotImplemented(String),
}