Skip to main content

Redactor

Struct Redactor 

Source
pub struct Redactor { /* private fields */ }
Expand description

Two-phase redactor: mark areas, then apply.

Implementations§

Source§

impl Redactor

Source

pub fn new() -> Self

Create a new empty redactor.

Source

pub fn mark(&mut self, area: RedactionArea)

Mark an area for redaction.

Source

pub fn mark_all(&mut self, areas: impl IntoIterator<Item = RedactionArea>)

Mark multiple areas for redaction.

Source

pub fn pending_count(&self) -> usize

Return the number of pending redaction areas.

Source

pub fn apply(&self, doc: &mut Document) -> Result<RedactionReport>

Apply all pending redactions to the document.

This permanently removes content in the marked areas, draws overlay rectangles, and cleans document metadata.

Each area is in the page’s default user space (the coordinate system of the page’s content before any cm). Content counts as under an area where it is drawn, after the current transformation matrix, the text matrix and any Form XObject /Matrix have been applied:

  • glyphs under an area are removed one by one; the glyphs around them keep their positions;
  • a path that touches an area is removed whole (a clipping path keeps its clip and loses only its painting);
  • an image or inline image that touches an area is replaced by a black image of the same placement;
  • a Form XObject under an area is filtered the same way. A form that is also drawn elsewhere is copied first, so other pages and other placements keep the original;
  • replacement text (/ActualText, /Alt, /E) on marked content that lost something is removed with it.

Objects the rewrite no longer uses are dropped, so a full save writes none of the removed content. An incremental save would keep the earlier revision: save the result with a full rewrite.

§Errors

Returns an error, and leaves doc unchanged, when a redacted page contains something the filter cannot place: text in a Type3 font, vertical writing, a content stream it cannot decode or parse, a Form XObject that draws itself, or an image in a filter listed under RedactError::UnsupportedImageFilter. It never reports success over content it did not process.

Trait Implementations§

Source§

impl Debug for Redactor

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Redactor

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

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().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.