#![doc = include_str!("../README.md")]
#![forbid(unsafe_code)]
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
#![cfg_attr(
not(all(feature = "edit", feature = "forms")),
allow(rustdoc::broken_intra_doc_links)
)]
mod annotation;
#[cfg(feature = "edit")]
mod attach;
#[cfg(feature = "edit")]
mod canvas;
mod document;
#[cfg(feature = "edit")]
mod edit;
mod error;
#[cfg(feature = "edit")]
mod flatten;
#[cfg(feature = "forms")]
mod form;
#[cfg(feature = "forms")]
mod form_session;
mod outline;
#[cfg(feature = "forms")]
mod owned_form;
mod owned_page;
mod page;
#[cfg(feature = "edit")]
mod pdfa;
mod profile;
mod render;
#[cfg(feature = "edit")]
mod save;
mod session;
mod signature;
#[cfg(feature = "edit")]
mod stamp;
#[cfg(feature = "svg-import")]
mod svg_ingest;
#[cfg(feature = "svg-text")]
mod svg_text;
mod thumbnail;
pub use annotation::{AnnotFlags, Annotation, Subtype};
#[cfg(feature = "svg-import")]
pub use canvas::SvgForm;
#[cfg(feature = "edit")]
pub use canvas::{Canvas, Dash, Fill, LineCap, LineJoin, MiterLimit, Paint, Stroke};
pub use document::{
Attachment, Document, EmbeddedFontFile, FontFileKind, Metadata, OpenOptions,
OpenOptionsBuilder, Revision, UnknownFontFileKind,
};
#[cfg(feature = "edit")]
pub use edit::{ImageBuilder, PageEdit, PathBuilder, TextBuilder};
pub use error::{Error, ErrorCode, Result, UnknownErrorCode};
#[cfg(feature = "edit")]
pub use flatten::{FlattenMode, Flattened, UnknownFlattenMode};
#[cfg(feature = "forms")]
pub use form::{Field, FieldFlags, FieldKind, Form, UnknownField};
#[cfg(feature = "forms")]
pub use form_session::{
AppearanceUpdate, Button, Cascade, FieldRef, FieldWrites, FormSession, Key, Keystroke,
KeystrokeOutcome, Modifiers, NoScripts, Response, SessionConfig, UpdateKind,
};
pub use outline::{Bookmark, Outline, OutlineIter};
#[cfg(feature = "forms")]
pub use owned_form::OwnedFormSession;
pub use owned_page::OwnedPage;
pub use page::{
ImageEncoding, LinkTarget, Page, PageImage, PageLink, PreparedPage, RawImage,
UnknownImageEncoding,
};
#[cfg(feature = "forms")]
pub use pdfrum_form::AnnotId;
#[cfg(feature = "forms")]
pub use pdfrum_form::{Placement, PopupGeometry, PopupView, ScrollView};
#[cfg(feature = "markdown")]
pub use pdfrum_markdown::Block;
#[cfg(feature = "markdown")]
pub mod markdown {
pub use pdfrum_markdown::{render, render_with_images};
}
#[cfg(feature = "svg-export")]
pub mod svg {
pub use pdfrum_svg::{RasterCause, RasterRegion, RasterReport, SvgBackend, SvgDevice, SvgPage};
}
#[cfg(feature = "javascript")]
pub use pdfrum_form::script::{
BuildError as ScriptBuildError, FieldActions, ScriptFailure, ScriptStop,
};
#[cfg(feature = "javascript")]
pub use pdfrum_form::{ScriptCascade, ScriptConfig, TranscriptLine};
pub use render::{ColorMode, ColorScheme, Pixmap, RenderOptions, RenderOptionsBuilder, TextAa};
pub use pdfrum_render::{RasterBackend, RenderDevice};
#[cfg(feature = "edit")]
pub use pdfrum_edit::{EmbeddedFont, FontEncoding, MissingGlyph, StandardFont};
#[cfg(feature = "edit")]
pub use attach::{AttachmentOptions, AttachmentOptionsBuilder};
#[cfg(feature = "edit")]
pub use pdfrum_edit::pdf_date;
#[cfg(feature = "edit")]
pub use pdfrum_edit::{EmbeddedImage, PixelFormat};
#[cfg(feature = "edit")]
pub use pdfrum_edit::{Encryption, IdSource, PageBox};
#[cfg(feature = "agg")]
pub use pdfrum_raster_agg::AggBackend;
#[cfg(feature = "tiny-skia")]
pub use pdfrum_raster_tinyskia::TinySkiaBackend;
#[cfg(feature = "vello-gpu")]
pub use pdfrum_raster_vello::VelloBackend as VelloGpuBackend;
#[cfg(feature = "vello-cpu")]
pub use pdfrum_raster_vello_cpu::VelloCpuBackend;
#[cfg(feature = "edit")]
pub use save::{DocEdit, SaveOptions, SaveOptionsBuilder, UnknownUpdate, Update};
pub use session::RenderSession;
pub use signature::Signature;
#[cfg(feature = "edit")]
pub use stamp::{StampOptions, StampOptionsBuilder, StampPosition, UnknownStampPosition};
#[cfg(feature = "svg-import")]
pub use svg_ingest::{SvgFit, SvgIngestReport, Unsupported, UnsupportedItem};
#[cfg(feature = "svg-text")]
pub use svg_text::SvgFonts;
#[cfg(feature = "svg-import")]
pub use usvg::Error as SvgError;
pub use pdfrum_page::PageObject;
pub use pdfrum_page::IndexOutOfRange;
pub use pdfrum_page::BuildContext;
pub use pdfrum_font::SubstitutionOptions;
pub use pdfrum_text::{
CharBox, CharIndex, FindOptions, IndexMap, TextIndex, TextPage, WebLink, Word,
};
pub use pdfrum_doc::{Action, ActionKind, Dest, Link};
pub use pdfrum_doc::pdfa::{
Clause as PdfaClause, Level as PdfaLevel, Report as PdfaReport, Subject as PdfaSubject,
Violation as PdfaViolation,
};
#[cfg(feature = "edit")]
pub use pdfa::{
Compromise as PdfaCompromise, Concession as PdfaConcession, Conversion as PdfaConversion,
Dpi as PdfaDpi, Policy as PdfaPolicy, RasterCause as PdfaRasterCause, Refusal as PdfaRefusal,
};
pub use pdfrum_common::{
Deadline, DiagKind, Diagnostic, Diagnostics, LimitExceeded, Limits, Operation, Severity,
};
pub use pdfrum_common::PdfVersion;
pub use pdfrum_common::PageIndex;
pub use pdfrum_crypt::Permissions;
pub use kurbo::{Affine, BezPath, Point, Rect, Size};
#[cfg(feature = "edit")]
pub use kurbo::Shape;
pub use peniko::Color;
pub use pdfrum_doc::Error as DocError;
#[cfg(feature = "edit")]
pub use pdfrum_edit::Error as SaveError;
pub use pdfrum_object::Error as ObjectError;
pub use pdfrum_parser::Error as ReadError;
pub use pdfrum_parser::LoadError as OpenError;
pub use pdfrum_render::Error as RenderError;
pub use pdfrum_text::Error as TextError;
pub use pdfrum_render::Argb;
pub use pdfrum_doc::{Focus, FocusBox};
pub use pdfrum_doc::GeneratedAp;
#[cfg(feature = "forms")]
pub use pdfrum_form::Event;
pub use pdfrum_object::ObjRef;
pub use pdfrum_doc::structure::{Kid, StructElement, StructTree};
pub use pdfrum_object::{Array, ByteSpan, Dict, Name, Object, PdfString, Stream};
pub use pdfrum_parser::{Entry as XrefEntry, Section};
pub use pdfrum_object::Resolve;
pub use pdfrum_page::TextRenderMode;
pub use pdfrum_page::{NotAQuarterTurn, Rotation};
pub use pdfrum_render::RenderCaches;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn the_public_types_are_send_and_sync() {
fn send_sync<T: Send + Sync>() {}
fn send<T: Send>() {}
send_sync::<Document>();
send_sync::<OwnedPage>();
send_sync::<Pixmap>();
send_sync::<TextPage>();
send_sync::<Error>();
send_sync::<RenderOptions>();
#[cfg(feature = "edit")]
send_sync::<SaveOptions>();
send_sync::<Metadata>();
send::<BuildContext>();
send::<RenderSession>();
}
#[test]
fn the_backends_are_send_and_sync() {
fn send_sync<T: Send + Sync>() {}
fn send<T: Send>() {}
#[cfg(feature = "vello-cpu")]
send_sync::<VelloCpuBackend>();
#[cfg(feature = "tiny-skia")]
send_sync::<TinySkiaBackend>();
#[cfg(feature = "agg")]
send_sync::<AggBackend>();
#[cfg(feature = "vello-gpu")]
send_sync::<VelloGpuBackend<'static>>();
#[cfg(all(feature = "svg-export", feature = "vello-cpu"))]
{
use pdfrum_render::RasterBackend;
send_sync::<svg::SvgBackend<'static, VelloCpuBackend>>();
send::<svg::SvgDevice<<VelloCpuBackend as RasterBackend>::Device>>();
}
#[cfg(all(feature = "svg-export", feature = "tiny-skia"))]
{
use pdfrum_render::RasterBackend;
send_sync::<svg::SvgDevice<<TinySkiaBackend as RasterBackend>::Device>>();
}
}
#[test]
fn the_borrowing_types_are_send_and_sync_too() {
fn send_sync<T: Send + Sync>() {}
send_sync::<Page<'static>>();
send_sync::<Annotation<'static>>();
#[cfg(feature = "forms")]
send_sync::<Form<'static>>();
send_sync::<Outline<'static>>();
send_sync::<Bookmark<'static>>();
}
}