Skip to main content

oxideav_pdf/reader/
mod.rs

1//! PDF *reader* — byte-stream → typed object tree → high-level Scene.
2//!
3//! Round 3, in commits:
4//!
5//! 1. [`lex`]: tokenizer (bytes → [`Token`]s) per ISO 32000-1 §7.2.
6//! 2. [`parse`]: object parser (tokens → [`crate::objects::Object`]).
7//! 3. xref + trailer parser, top-level catalog walk.
8//! 4. Content-stream operator parser (inverse of
9//!    [`crate::operators`]) — `m`/`l`/`c`/`re` → [`PathCommand`],
10//!    `cm` → [`Transform2D`], `q`/`Q` → group save/restore, etc.
11//! 5. /Info dict → [`oxideav_scene::Metadata`] +
12//!    Scene assembly via [`oxideav_scene::Page`].
13//!
14//! Round 3 supports PDF 1.4 with simple xref + uncompressed object
15//! streams. Object streams (PDF 1.5+), encryption, incremental
16//! updates, and linearization land in round 4+.
17//!
18//! [`Token`]: lex::Token
19//! [`PathCommand`]: oxideav_core::vector::PathCommand
20//! [`Transform2D`]: oxideav_core::vector::Transform2D
21
22pub mod actions;
23pub mod annotation;
24pub mod attachments;
25pub mod content;
26pub mod document;
27pub mod encoding;
28pub mod filters;
29pub mod hierarchy;
30pub mod images;
31pub mod inline_images;
32pub mod layout;
33pub mod lex;
34pub mod linearize;
35pub mod link;
36pub mod ocg;
37pub mod outline;
38pub mod parse;
39pub mod pdfa;
40pub mod sig;
41pub mod text;
42pub mod xmp;
43pub mod xref;
44
45pub use actions::{actions, ActionKind, ActionTrigger, PdfAction};
46pub use annotation::{
47    annotations, AnnotationAppearance, AnnotationKind, FixedPrint, MovieActivation, PdfAnnotation,
48    TextMarkupVariant, ThreeDActivation, ThreeDViewSelector,
49};
50pub use attachments::{attachments, PdfAttachment};
51pub use content::{
52    parse_content_stream, parse_content_stream_full, parse_content_stream_full_with_color_space,
53    parse_content_stream_full_with_properties, parse_content_stream_full_with_shading,
54    parse_content_stream_with_resources, ContentInlineImage, ContentMarkedContent, ContentShading,
55    ContentTextShow, MarkedContentOp, MeshPatch, MeshShading, MeshTriangle, MeshVertex,
56    ParsedContent, ShadingGradient, TextShowOp,
57};
58pub use document::{
59    read_pdf_to_scene, read_pdf_to_scene_with_certificate,
60    read_pdf_to_scene_with_certificate_and_trust_store, read_pdf_to_scene_with_password,
61    DocumentReader,
62};
63pub use encoding::{
64    apply_encoding_differences, parse_encoding_differences, BaseEncoding, EncodingDifferences,
65    EncodingMap, EncodingOverride,
66};
67pub use hierarchy::{verify_hierarchy, HierarchyIssue, HierarchyReport, IssueSeverity};
68pub use images::{image_xobjects, ColorSpace, PdfImageXObject};
69pub use inline_images::{inline_images, InlineImageFilter, PdfInlineImage};
70pub use layout::{read_in_logical_order, LayoutMode, ReadingOrderText};
71pub use linearize::{parse_linearization_dict, LinearizationParams};
72pub use link::{links, PdfLink, PdfLinkTarget};
73pub use ocg::{
74    optional_content, parse_membership, OcBaseState, OcConfig, OcListMode, OcMembership,
75    OcOrderItem, OcUsage, OcVisibilityExpression, OcVisibilityPolicy, OptionalContent,
76    OptionalContentGroup,
77};
78pub use outline::{outline, OutlineNode, PdfOutline};
79pub use pdfa::{pdfa_signals, PdfACatalogSignals, PdfAConformance};
80pub use sig::{doc_timestamps, signatures, signed_bytes, PdfDocTimestamp, PdfSignature};
81pub use text::{
82    extract_text, extract_text_marked, MarkedTextRun, PdfMarkedTextExtraction, PdfTextExtraction,
83    TextRenderMode, TextRun,
84};
85pub use xmp::XmpPacket;