pub struct FileSpec {
pub object: Object,
}Expand description
A file specification: either a bare string or a dictionary of names.
Fields§
§object: ObjectThe object the specification was read from.
Implementations§
Source§impl FileSpec
impl FileSpec
Sourcepub fn new(object: Object) -> FileSpec
pub fn new(object: Object) -> FileSpec
Wraps an object as a file specification.
use pdfrum_doc::FileSpec;
use pdfrum_object::{NoResolve, Object, PdfString};
let spec = FileSpec::new(Object::Str(PdfString::literal(b"report.pdf")));
assert_eq!(spec.file_name(&NoResolve), "report.pdf");Sourcepub fn file_name<R: Resolve>(&self, r: &R) -> String
pub fn file_name<R: Resolve>(&self, r: &R) -> String
The file’s name.
An object that is neither a string nor a dictionary — a name, for instance — has no file name at all.
use pdfrum_doc::FileSpec;
use pdfrum_object::{Dict, Name, NoResolve, Object, PdfString};
// `/UF` outranks `/F`.
let dict = Dict::from_pairs([
(Name::from("F"), Object::Str(PdfString::literal(b"old.pdf"))),
(Name::from("UF"), Object::Str(PdfString::literal(b"new.pdf"))),
]);
assert_eq!(FileSpec::new(Object::Dict(dict)).file_name(&NoResolve), "new.pdf");
// Neither a string nor a dictionary: no file name at all.
let named = FileSpec::new(Object::Name(Name::from("F")));
assert_eq!(named.file_name(&NoResolve), "");Sourcepub fn file_stream<R: Resolve>(&self, r: &R) -> Option<Stream>
pub fn file_stream<R: Resolve>(&self, r: &R) -> Option<Stream>
The embedded file’s stream, when the specification carries one.
The presence test runs on the outer dictionary’s name keys while
the stream comes from /EF, so a name with no matching /EF entry
falls through to the next key rather than ending the search. A /FS
of URL truncates the key list to /UF and /F.
use pdfrum_doc::FileSpec;
use pdfrum_object::{NoResolve, Object, PdfString};
// A bare string names a file but embeds nothing.
let spec = FileSpec::new(Object::Str(PdfString::literal(b"report.pdf")));
assert!(spec.file_stream(&NoResolve).is_none());Sourcepub fn params<R: Resolve>(&self, r: &R) -> Option<Dict>
pub fn params<R: Resolve>(&self, r: &R) -> Option<Dict>
The embedded file stream’s /Params dictionary.
use pdfrum_doc::FileSpec;
use pdfrum_object::{NoResolve, Object, PdfString};
let spec = FileSpec::new(Object::Str(PdfString::literal(b"report.pdf")));
assert!(spec.params(&NoResolve).is_none());Trait Implementations§
impl StructuralPartialEq for FileSpec
Auto Trait Implementations§
impl Freeze for FileSpec
impl RefUnwindSafe for FileSpec
impl Send for FileSpec
impl Sync for FileSpec
impl Unpin for FileSpec
impl UnsafeUnpin for FileSpec
impl UnwindSafe for FileSpec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more