pub enum OutputQuality {
Exact,
BestEffort,
Sandboxed,
}Expand description
Fidelity level of the flattened output relative to the source XFA data.
Variants§
Exact
All data was bound and rendered without skipping any scripts or content.
BestEffort
Some scripts were skipped (e.g. JavaScript with BestEffortStatic mode);
output may differ from a full Adobe Reader render.
Sandboxed
All JavaScript scripts on the document executed inside the sandbox
without runtime / timeout / OOM errors (requires xfa-js-sandboxed feature).
Implementations§
Source§impl OutputQuality
impl OutputQuality
Sourcepub fn as_str(self) -> &'static str
pub fn as_str(self) -> &'static str
Return a short lowercase string label suitable for logging and metrics.
Examples found in repository?
examples/flatten_xfa.rs (line 55)
19fn main() -> Result<(), Box<dyn Error>> {
20 let args: Vec<String> = std::env::args().collect();
21 if args.len() < 3 {
22 eprintln!("usage: flatten_xfa <input.pdf> <output.pdf>");
23 std::process::exit(1);
24 }
25
26 let input = PathBuf::from(&args[1]);
27 let output = PathBuf::from(&args[2]);
28
29 let pdf_bytes =
30 std::fs::read(&input).map_err(|e| format!("failed to read {}: {e}", input.display()))?;
31
32 // Early check: encrypted PDFs cannot be flattened without a password.
33 if pdf_xfa::is_pdf_encrypted(&pdf_bytes) {
34 eprintln!(
35 "SKIP: {} is encrypted — supply a decrypted copy",
36 input.display()
37 );
38 std::process::exit(2);
39 }
40
41 let (flattened, metadata) = pdf_xfa::flatten_xfa_to_pdf_with_metadata(&pdf_bytes)
42 .map_err(|e| format!("flatten failed: {e}"))?;
43
44 std::fs::write(&output, &flattened)
45 .map_err(|e| format!("failed to write {}: {e}", output.display()))?;
46
47 // Count pages in the output using lopdf.
48 let page_count = count_pages(&flattened).unwrap_or(0);
49
50 println!(
51 "Flattened {} -> {} ({page_count} page{}, quality: {})",
52 input.display(),
53 output.display(),
54 if page_count == 1 { "" } else { "s" },
55 metadata.output_quality.as_str(),
56 );
57
58 Ok(())
59}Trait Implementations§
Source§impl Clone for OutputQuality
impl Clone for OutputQuality
Source§fn clone(&self) -> OutputQuality
fn clone(&self) -> OutputQuality
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for OutputQuality
impl Debug for OutputQuality
Source§impl Default for OutputQuality
impl Default for OutputQuality
Source§fn default() -> OutputQuality
fn default() -> OutputQuality
Returns the “default value” for a type. Read more
Source§impl PartialEq for OutputQuality
impl PartialEq for OutputQuality
Source§fn eq(&self, other: &OutputQuality) -> bool
fn eq(&self, other: &OutputQuality) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Copy for OutputQuality
impl Eq for OutputQuality
impl StructuralPartialEq for OutputQuality
Auto Trait Implementations§
impl Freeze for OutputQuality
impl RefUnwindSafe for OutputQuality
impl Send for OutputQuality
impl Sync for OutputQuality
impl Unpin for OutputQuality
impl UnsafeUnpin for OutputQuality
impl UnwindSafe for OutputQuality
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().