Skip to main content

Module reader

Module reader 

Source
Expand description

PDF reader — byte-stream → typed object tree → high-level Scene.

Round 3, in commits:

  1. lex: tokenizer (bytes → Tokens) per ISO 32000-1 §7.2.
  2. parse: object parser (tokens → crate::objects::Object).
  3. xref + trailer parser, top-level catalog walk.
  4. Content-stream operator parser (inverse of crate::operators) — m/l/c/rePathCommand, cmTransform2D, q/Q → group save/restore, etc.
  5. /Info dict → oxideav_scene::Metadata + Scene assembly via oxideav_scene::Page.

Round 3 supports PDF 1.4 with simple xref + uncompressed object streams. Object streams (PDF 1.5+), encryption, incremental updates, and linearization land in round 4+.

Re-exports§

pub use actions::actions;
pub use actions::ActionKind;
pub use actions::ActionTrigger;
pub use actions::PdfAction;
pub use annotation::annotations;
pub use annotation::AnnotationAppearance;
pub use annotation::AnnotationKind;
pub use annotation::FixedPrint;
pub use annotation::MovieActivation;
pub use annotation::PdfAnnotation;
pub use annotation::TextMarkupVariant;
pub use annotation::ThreeDActivation;
pub use annotation::ThreeDViewSelector;
pub use attachments::attachments;
pub use attachments::PdfAttachment;
pub use content::parse_content_stream;
pub use content::parse_content_stream_full;
pub use content::parse_content_stream_full_with_color_space;
pub use content::parse_content_stream_full_with_properties;
pub use content::parse_content_stream_full_with_shading;
pub use content::parse_content_stream_with_resources;
pub use content::ContentInlineImage;
pub use content::ContentMarkedContent;
pub use content::ContentShading;
pub use content::ContentTextShow;
pub use content::MarkedContentOp;
pub use content::MeshPatch;
pub use content::MeshShading;
pub use content::MeshTriangle;
pub use content::MeshVertex;
pub use content::ParsedContent;
pub use content::ShadingGradient;
pub use content::TextShowOp;
pub use document::read_pdf_to_scene;
pub use document::read_pdf_to_scene_with_certificate;
pub use document::read_pdf_to_scene_with_certificate_and_trust_store;
pub use document::read_pdf_to_scene_with_password;
pub use document::DocumentReader;
pub use encoding::apply_encoding_differences;
pub use encoding::parse_encoding_differences;
pub use encoding::BaseEncoding;
pub use encoding::EncodingDifferences;
pub use encoding::EncodingMap;
pub use encoding::EncodingOverride;
pub use hierarchy::verify_hierarchy;
pub use hierarchy::HierarchyIssue;
pub use hierarchy::HierarchyReport;
pub use hierarchy::IssueSeverity;
pub use images::image_xobjects;
pub use images::ColorSpace;
pub use images::PdfImageXObject;
pub use inline_images::inline_images;
pub use inline_images::InlineImageFilter;
pub use inline_images::PdfInlineImage;
pub use layout::read_in_logical_order;
pub use layout::LayoutMode;
pub use layout::ReadingOrderText;
pub use linearize::parse_linearization_dict;
pub use linearize::LinearizationParams;
pub use link::PdfLinkTarget;
pub use ocg::optional_content;
pub use ocg::parse_membership;
pub use ocg::OcBaseState;
pub use ocg::OcConfig;
pub use ocg::OcListMode;
pub use ocg::OcMembership;
pub use ocg::OcOrderItem;
pub use ocg::OcUsage;
pub use ocg::OcVisibilityExpression;
pub use ocg::OcVisibilityPolicy;
pub use ocg::OptionalContent;
pub use ocg::OptionalContentGroup;
pub use outline::outline;
pub use outline::OutlineNode;
pub use outline::PdfOutline;
pub use pdfa::pdfa_signals;
pub use pdfa::PdfACatalogSignals;
pub use pdfa::PdfAConformance;
pub use sig::doc_timestamps;
pub use sig::signatures;
pub use sig::signed_bytes;
pub use sig::PdfDocTimestamp;
pub use sig::PdfSignature;
pub use text::extract_text;
pub use text::extract_text_marked;
pub use text::MarkedTextRun;
pub use text::PdfMarkedTextExtraction;
pub use text::PdfTextExtraction;
pub use text::TextRenderMode;
pub use text::TextRun;
pub use xmp::XmpPacket;

Modules§

actions
Round-36 — PDF action reader (ISO 32000-1 §12.6).
annotation
Round-26 — generic annotation reader (ISO 32000-1 §12.5).
attachments
Round-33 — embedded file attachment reader (ISO 32000-1 §7.11 + §3.10 + §7.7.4 + §7.9.6).
content
PDF content-stream operator parser — inverse of crate::operators.
document
Top-level reader — bytes → resolved [Document] / Scene.
encoding
PDF simple-font encoding resolver — /Encoding dictionary + /Differences array → 256-entry byte → Unicode map.
filters
Shared, byte-level PDF stream-filter decoders.
hierarchy
Round-27 — Object-hierarchy validator (ISO 32000-1 §7.7.2 + §7.7.3).
images
JPEG-passthrough Image XObject extraction (round 23).
inline_images
Inline-image extraction from PDF content streams (round 35).
layout
Reading-order layout pass for Tagged PDFs (round 29).
lex
PDF tokenizer (ISO 32000-1 §7.2).
linearize
Round-27 — Linearization Parameter Dictionary reader (ISO 32000-1 §F.2 + Annex F.3).
link
Round-25 — PDF Link annotation reader (ISO 32000-1 §12.5.6.5).
ocg
Round-95 — Optional Content (OCG / OCMD) reader (ISO 32000-1 §8.11 + §7.7.2 Table 28 catalog /OCProperties).
outline
Round-25 — PDF outline (bookmark) tree reader.
parse
PDF object parser — Lexer tokens → Object tree.
pdfa
Round-27 — PDF/A conformance detection beyond the XMP tag (ISO 19005-1..4 §6.x — identification + structural requirements).
sig
Round-21 — PDF /Sig annotation reader.
text
PDF text extraction — content-stream walker that emits text runs with font + position resolved.
xmp
Round-26 — XMP packet field extraction (ISO 32000-1 §14.3.2 + Adobe XMP Specification, Sept-2012, ISO 16684-1).
xref
PDF cross-reference table + trailer parser (ISO 32000-1 §7.5.4–§7.5.5).