pub struct PdfDocument { /* private fields */ }Implementations§
Source§impl PdfDocument
impl PdfDocument
pub fn open(data: impl Into<Arc<[u8]>>) -> Result<Self>
pub fn open_with_limits( data: impl Into<Arc<[u8]>>, limits: ParseLimits, ) -> Result<Self>
Sourcepub fn open_with_password(
data: impl Into<Arc<[u8]>>,
password: &[u8],
) -> Result<Self>
pub fn open_with_password( data: impl Into<Arc<[u8]>>, password: &[u8], ) -> Result<Self>
Open an encrypted document with a user or owner password. Returns
zpdf_core::Error::WrongPassword when the password authenticates as
neither. (A non-encrypted document opens regardless of the password.)
pub fn open_with_password_and_limits( data: impl Into<Arc<[u8]>>, password: &[u8], limits: ParseLimits, ) -> Result<Self>
Sourcepub fn is_encrypted(&self) -> bool
pub fn is_encrypted(&self) -> bool
True when the document is encrypted (carries an /Encrypt dictionary).
pub fn page_count(&self) -> usize
pub fn page(&self, index: usize) -> Result<PdfPage>
pub fn file(&self) -> &PdfFile
pub fn version(&self) -> (u8, u8)
Sourcepub fn page_content_bytes(&self, page: &PdfPage) -> Result<Vec<u8>>
pub fn page_content_bytes(&self, page: &PdfPage) -> Result<Vec<u8>>
Get decoded content stream bytes for a page.
Sourcepub fn load_page_fonts(&self, page: &PdfPage) -> FontCache
pub fn load_page_fonts(&self, page: &PdfPage) -> FontCache
Load all fonts referenced by a page.
Sourcepub fn page_annotations(&self, page: &PdfPage) -> Vec<Annotation>
pub fn page_annotations(&self, page: &PdfPage) -> Vec<Annotation>
Parse a page’s annotations into renderable form (/Rect, /F, the /AS-selected appearance stream, /OC membership). Widget annotations for interactive-form fields gain a generated appearance when the producer left none (or set /NeedAppearances).
Sourcepub fn acro_form(&self) -> Option<&AcroForm>
pub fn acro_form(&self) -> Option<&AcroForm>
The document’s interactive form (/AcroForm), if any. Parsed once and
cached for the lifetime of the document.
Sourcepub fn oc_config(&self) -> Option<OcConfig>
pub fn oc_config(&self) -> Option<OcConfig>
The document’s default optional-content configuration, if any.
Sourcepub fn output_intents(&self) -> Vec<OutputIntent>
pub fn output_intents(&self) -> Vec<OutputIntent>
The document-level output intents (catalog /OutputIntents). Empty when
the document declares none. Page-level intents (PDF 2.0) are carried on
the page and read via PdfDocument::page_output_intents.
Sourcepub fn page_output_intents<'a>(&self, page: &'a PdfPage) -> &'a [OutputIntent]
pub fn page_output_intents<'a>(&self, page: &'a PdfPage) -> &'a [OutputIntent]
PDF 2.0 page-level /OutputIntents, which override the document-level
intents for that page. Empty for pre-2.0 / most documents.
Sourcepub fn embedded_files(&self) -> Vec<EmbeddedFile>
pub fn embedded_files(&self) -> Vec<EmbeddedFile>
The document’s embedded files — file streams registered in the catalog’s
/Names /EmbeddedFiles name tree (a viewer’s “attachments”). Empty when
the document carries none. Pull a file’s bytes with
PdfDocument::embedded_file_bytes.
Sourcepub fn associated_files(&self) -> Vec<EmbeddedFile>
pub fn associated_files(&self) -> Vec<EmbeddedFile>
Catalog-level associated files (/Root /AF, PDF 2.0). Each carries an
/AFRelationship. Per PDF 2.0 these are also listed by
PdfDocument::embedded_files; the two lists usually overlap.
Sourcepub fn page_associated_files(&self, page: &PdfPage) -> Vec<EmbeddedFile>
pub fn page_associated_files(&self, page: &PdfPage) -> Vec<EmbeddedFile>
Page-level associated files (/Page /AF, PDF 2.0) for one page. /AF is
not inheritable, so only the leaf page dictionary is consulted.
Sourcepub fn embedded_file_bytes(&self, file: &EmbeddedFile) -> Result<Vec<u8>>
pub fn embedded_file_bytes(&self, file: &EmbeddedFile) -> Result<Vec<u8>>
Decode and return the bytes of an embedded file. Routes through the
parser’s filter pipeline, so it respects ParseLimits (max stream size).
Errors if the file specification carries no embedded stream
(EmbeddedFile::is_embedded is false).
Sourcepub fn outline(&self) -> Vec<OutlineItem>
pub fn outline(&self) -> Vec<OutlineItem>
The document outline (bookmarks) from the catalog’s /Outlines, as a
nested tree of OutlineItem. Each item’s /Dest or go-to /A is
resolved to a Destination; URI / remote-go-to targets are captured as
strings. Empty when the document has no outline.
Sourcepub fn named_destination(&self, name: &[u8]) -> Option<Destination>
pub fn named_destination(&self, name: &[u8]) -> Option<Destination>
Resolve a named destination (from a named-destination string/name) to a
Destination. Tries the /Names /Dests name tree and the legacy
/Root /Dests dictionary. None when the name is unknown.
Sourcepub fn resolve_destination(&self, dest: &PdfObject) -> Option<Destination>
pub fn resolve_destination(&self, dest: &PdfObject) -> Option<Destination>
Resolve any destination value — an explicit [page /Fit …] array, a
named-destination name/string, a << /D … >> dictionary, or an indirect
reference to one — to a Destination. This is what a /Dest entry or
a go-to action’s /D carries; useful for resolving link-annotation
targets. None when it does not name a destination.
Sourcepub fn info(&self) -> Option<DocInfo>
pub fn info(&self) -> Option<DocInfo>
The document information dictionary (/Info): title, author, subject,
keywords, creator/producer, and creation/modification dates (raw PDF date
strings). None when the document carries no /Info or it is empty.
Sourcepub fn page_labels(&self) -> Option<PageLabels>
pub fn page_labels(&self) -> Option<PageLabels>
The document’s page labels (/PageLabels, ISO 32000-1 §12.4.2): the
number tree mapping page indices to the printed labels a viewer shows and
a user navigates by — e.g. lowercase-roman front matter (i, ii, …) then
decimal body (1, 2, …), or a prefixed appendix (A-1, A-2, …). These
are distinct from the physical 0-based page indices. None when the
document declares no page labels. Query a page with PageLabels::label.
Sourcepub fn xmp_metadata(&self) -> Option<XmpMetadata>
pub fn xmp_metadata(&self) -> Option<XmpMetadata>
The document’s XMP metadata (/Metadata, ISO 32000-1 §14.3.2): the common
Dublin Core / XMP / PDF-schema properties (title, authors, description,
keywords, producer, creator tool, dates), read with a bounded scrape (no
XML engine; entity-expansion-safe). None when the document carries no
/Metadata or none of the recognized properties. PDF 2.0 prefers this
over the /Info dictionary (PdfDocument::info).
Sourcepub fn metadata_bytes(&self) -> Option<Vec<u8>>
pub fn metadata_bytes(&self) -> Option<Vec<u8>>
The raw bytes of the catalog’s /Metadata XMP packet (decoded through the
filter pipeline, respecting ParseLimits), for callers that want to parse
the RDF/XML themselves. None when the document carries no /Metadata.