mod append;
mod document;
mod font;
#[cfg(test)]
pub(crate) use font::tests::{drawing_font, symbol_font};
mod fragment;
pub(crate) mod input;
mod outline;
mod page_walk;
mod types;
mod writer;
mod xref;
pub use append::{PdfOutlineAppender, copy_pdf, copy_pdf_range};
pub use document::{
BilevelImageSpec, BilevelImageWriter, ContentPageWriter, FontObject, ImageEncoding,
ImageObject, ImagePlacement, ImageSpec, MAX_PAGE_IMAGE_PLACEMENTS, PageSpec, PdfDocument,
};
pub use font::{FontGlyph, MAX_FONT_METADATA_BYTES, OpenTypeFont};
pub use fragment::{FragmentObject, FragmentPlan, reconstruct_fragment_with_bookmarks};
pub(crate) use fragment::{
InspectedObject, InspectedPlan, append_replacement, reconstruct_inspected,
};
pub use input::{PdfIndex, RepairObject};
pub use outline::BookmarkView;
pub use types::{PdfRange, PdfRef};
pub use writer::{MAX_CLASSIC_PDF_BYTES, ObjectId, PdfWriter};
impl crate::Error {
pub(crate) fn pdf(
kind: crate::ErrorKind,
offset: u64,
object: Option<(u32, u16)>,
reason: &'static str,
) -> Self {
Self::from(kind).at(offset).because(reason).in_pdf(object)
}
pub(crate) fn ambiguous_repair(self) -> Self {
match self.context {
crate::Context::Pdf { object, .. } => self.within(crate::Context::Pdf {
object,
repair: true,
}),
_ => self,
}
}
pub(crate) fn is_pdf_problem(&self) -> bool {
matches!(self.context, crate::Context::Pdf { .. })
&& matches!(
self.kind,
crate::ErrorKind::Malformed
| crate::ErrorKind::Encrypted
| crate::ErrorKind::UnsupportedFormat
)
}
pub(crate) fn is_malformed_pdf(&self) -> bool {
matches!(self.kind, crate::ErrorKind::Malformed)
&& matches!(self.context, crate::Context::Pdf { repair: false, .. })
}
}