Struct PdfPageTextObject

Source
pub struct PdfPageTextObject<'a> { /* private fields */ }
Expand description

A single PdfPageObject of type PdfPageObjectType::Text. The page object defines a single piece of formatted text.

Page objects can be created either attached to a PdfPage (in which case the page object’s memory is owned by the containing page) or detached from any page (in which case the page object’s memory is owned by the object). Page objects are not rendered until they are attached to a page; page objects that are never attached to a page will be lost when they fall out of scope.

The simplest way to create a page text object that is immediately attached to a page is to call the PdfPageObjectsCommon::create_text_object() function.

Creating a detached page text object offers more scope for customization, but you must add the object to a containing PdfPage manually. To create a detached page text object, use the PdfPageTextObject::new() function. The detached page text object can later be attached to a page by using the PdfPageObjectsCommon::add_text_object() function.

Implementations§

Source§

impl<'a> PdfPageTextObject<'a>

Source

pub fn new( document: &PdfDocument<'a>, text: impl ToString, font: impl ToPdfFontToken, font_size: PdfPoints, ) -> Result<Self, PdfiumError>

Creates a new PdfPageTextObject from the given arguments. The returned page object will not be rendered until it is added to a PdfPage using the PdfPageObjectsCommon::add_text_object() function.

A single space will be used if the given text is empty, in order to avoid unexpected behaviour from Pdfium when dealing with empty strings.

Source

pub fn render_mode(&self) -> PdfPageTextRenderMode

Returns the text rendering mode for the text contained within this PdfPageTextObject.

Source

pub fn scaled_font_size(&self) -> PdfPoints

Returns the effective size of the text when rendered, taking into account both the font size specified in this text object as well as any vertical scale factor applied to the text object’s transformation matrix.

To retrieve only the specified font size, ignoring any vertical scaling, use the PdfPageTextObject::unscaled_font_size() function.

Source

pub fn unscaled_font_size(&self) -> PdfPoints

Returns the font size of the text specified in this PdfPageTextObject.

Note that the effective size of the text when rendered may differ from the font size if a scaling factor has been applied to this text object’s transformation matrix. To retrieve the effective font size, taking vertical scaling into account, use the PdfPageTextObject::scaled_font_size() function.

Source

pub fn font(&self) -> PdfFont<'_>

Returns the PdfFont used to render the text contained within this PdfPageTextObject.

Source

pub fn text(&self) -> String

Returns the text contained within this PdfPageTextObject.

Text retrieval in Pdfium is handled by the PdfPageText object owned by the PdfPage containing this PdfPageTextObject. If this text object has not been attached to a page then text retrieval will be unavailable and an empty string will be returned.

When retrieving the text from many PdfPageTextObject objects (for instance, as part of a loop or an iterator), it may be faster to open the PdfPageText object once and keep it open while processing the text objects, like so:

let text_page = page.text()?; // Opens the text page once.

for object in <some object iterator> {
    let object_text = text_page.for_object(object)?;
}

The PdfPageText object will be closed when the binding to it (text_page in the example above) falls out of scope.

Source

pub fn set_text(&mut self, text: impl ToString) -> Result<(), PdfiumError>

Sets the text contained within this PdfPageTextObject, replacing any existing text.

A single space will be used if the given text is empty, in order to avoid unexpected behaviour from Pdfium when dealing with an empty string.

Source

pub fn set_render_mode( &mut self, render_mode: PdfPageTextRenderMode, ) -> Result<(), PdfiumError>

Sets the text rendering mode for the text contained within this PdfPageTextObject.

Source

pub fn chars( &self, text: &'a PdfPageText<'a>, ) -> Result<PdfPageTextChars<'a>, PdfiumError>

Returns a collection of the characters contained within this PdfPageTextObject, using character retrieval functionality provided by the given PdfPageText object.

Source

pub fn has_descenders( &self, text: &PdfPageText<'_>, ) -> Result<bool, PdfiumError>

Returns true if any of the characters contained within this PdfPageTextObject have a glyph shape that descends below the font baseline.

Character retrieval functionality is provided by the given PdfPageText object.

Source

pub fn descent(&self, text: &PdfPageText<'_>) -> Result<PdfPoints, PdfiumError>

Returns the descent of this PdfPageTextObject. The descent is the maximum distance below the baseline reached by any glyph in any of the characters contained in this text object, expressed as a negative points value.

Character retrieval and bounds measurement is provided by the given PdfPageText object.

Source

pub fn transform( &mut self, a: PdfMatrixValue, b: PdfMatrixValue, c: PdfMatrixValue, d: PdfMatrixValue, e: PdfMatrixValue, f: PdfMatrixValue, ) -> Result<(), PdfiumError>

Applies the given transformation, expressed as six values representing the six configurable elements of a nine-element 3x3 PDF transformation matrix, to this PdfPageTextObject.

To move, scale, rotate, or skew this PdfPageTextObject, consider using one or more of the following functions. Internally they all use Self::transform(), but are probably easier to use (and certainly clearer in their intent) in most situations.

The order in which transformations are applied is significant. For example, the result of rotating then translating an object may be vastly different from translating then rotating the same object.

An overview of PDF transformation matrices can be found in the PDF Reference Manual version 1.7 on page 204; a detailed description can be found in section 4.2.3 on page 207.

Source

pub fn apply_matrix(&mut self, matrix: PdfMatrix) -> Result<(), PdfiumError>

Applies the given transformation, expressed as a PdfMatrix, to this PdfPageTextObject.

Source

pub fn reset_matrix(&mut self, matrix: PdfMatrix) -> Result<(), PdfiumError>

Resets the transform matrix for this PdfPageTextObject to the the given PdfMatrix, overriding any previously applied transformations.

Source

pub fn reset_matrix_to_identity(&mut self) -> Result<(), PdfiumError>

Resets the transformation matrix for this PdfPageTextObject to the identity matrix, undoing any previously applied transformations.

Source

pub fn translate( &mut self, delta_x: PdfPoints, delta_y: PdfPoints, ) -> Result<(), PdfiumError>

Moves the origin of this PdfPageTextObject by the given horizontal and vertical delta distances.

Source

pub fn scale( &mut self, horizontal_scale_factor: PdfMatrixValue, vertical_scale_factor: PdfMatrixValue, ) -> Result<(), PdfiumError>

Changes the size of this PdfPageTextObject, scaling it by the given horizontal and vertical scale factors.

Source

pub fn flip_horizontally(&mut self) -> Result<(), PdfiumError>

Flips this PdfPageTextObject horizontally around its origin by applying a horizontal scale factor of -1.

Source

pub fn flip_vertically(&mut self) -> Result<(), PdfiumError>

Flips this PdfPageTextObject vertically around its origin by applying a vertical scale factor of -1.

Source

pub fn reflect(&mut self) -> Result<(), PdfiumError>

Reflects this PdfPageTextObject by flipping it both horizontally and vertically around its origin.

Source

pub fn rotate_counter_clockwise_degrees( &mut self, degrees: PdfMatrixValue, ) -> Result<(), PdfiumError>

Rotates this PdfPageTextObject counter-clockwise by the given number of degrees.

Source

pub fn rotate_clockwise_degrees( &mut self, degrees: PdfMatrixValue, ) -> Result<(), PdfiumError>

Rotates this PdfPageTextObject clockwise by the given number of degrees.

Source

pub fn rotate_counter_clockwise_radians( &mut self, radians: PdfMatrixValue, ) -> Result<(), PdfiumError>

Rotates this PdfPageTextObject counter-clockwise by the given number of radians.

Source

pub fn rotate_clockwise_radians( &mut self, radians: PdfMatrixValue, ) -> Result<(), PdfiumError>

Rotates this PdfPageTextObject clockwise by the given number of radians.

Source

pub fn skew_degrees( &mut self, x_axis_skew: PdfMatrixValue, y_axis_skew: PdfMatrixValue, ) -> Result<(), PdfiumError>

Skews the axes of this PdfPageTextObject by the given angles in degrees.

Source

pub fn skew_radians( &mut self, x_axis_skew: PdfMatrixValue, y_axis_skew: PdfMatrixValue, ) -> Result<(), PdfiumError>

Skews the axes of this PdfPageTextObject by the given angles in radians.

Source

pub fn matrix(&self) -> Result<PdfMatrix, PdfiumError>

Returns the transformation matrix currently applied to this PdfPageTextObject.

Source

pub fn get_translation(&self) -> (PdfPoints, PdfPoints)

Returns the current horizontal and vertical translation of the origin of this PdfPageTextObject.

Source

pub fn get_horizontal_translation(&self) -> PdfPoints

Returns the current horizontal translation of the origin of this PdfPageTextObject.

Source

pub fn get_vertical_translation(&self) -> PdfPoints

Returns the current vertical translation of the origin of this PdfPageTextObject.

Source

pub fn get_scale(&self) -> (PdfMatrixValue, PdfMatrixValue)

Returns the current horizontal and vertical scale factors applied to this PdfPageTextObject.

Source

pub fn get_horizontal_scale(&self) -> PdfMatrixValue

Returns the current horizontal scale factor applied to this PdfPageTextObject.

Source

pub fn get_vertical_scale(&self) -> PdfMatrixValue

Returns the current vertical scale factor applied to this PdfPageTextObject.

Source

pub fn get_rotation_counter_clockwise_degrees(&self) -> PdfMatrixValue

Returns the counter-clockwise rotation applied to this PdfPageTextObject, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_rotation_clockwise_degrees(&self) -> PdfMatrixValue

Returns the clockwise rotation applied to this PdfPageTextObject, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_rotation_counter_clockwise_radians(&self) -> PdfMatrixValue

Returns the counter-clockwise rotation applied to this PdfPageTextObject, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_rotation_clockwise_radians(&self) -> PdfMatrixValue

Returns the clockwise rotation applied to this PdfPageTextObject, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_skew_degrees(&self) -> (PdfMatrixValue, PdfMatrixValue)

Returns the current x axis and y axis skew angles applied to this PdfPageTextObject, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_x_axis_skew_degrees(&self) -> PdfMatrixValue

Returns the current x axis skew angle applied to this PdfPageTextObject, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_y_axis_skew_degrees(&self) -> PdfMatrixValue

Returns the current y axis skew applied to this PdfPageTextObject, in degrees.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_skew_radians(&self) -> (PdfMatrixValue, PdfMatrixValue)

Returns the current x axis and y axis skew angles applied to this PdfPageTextObject, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_x_axis_skew_radians(&self) -> PdfMatrixValue

Returns the current x axis skew applied to this PdfPageTextObject, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Source

pub fn get_y_axis_skew_radians(&self) -> PdfMatrixValue

Returns the current y axis skew applied to this PdfPageTextObject, in radians.

If the object is both rotated and skewed, the return value of this function will reflect the combined operation.

Trait Implementations§

Source§

impl<'a> From<PdfPageTextObject<'a>> for PdfPageObject<'a>

Source§

fn from(object: PdfPageTextObject<'a>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'a> Freeze for PdfPageTextObject<'a>

§

impl<'a> !RefUnwindSafe for PdfPageTextObject<'a>

§

impl<'a> !Send for PdfPageTextObject<'a>

§

impl<'a> !Sync for PdfPageTextObject<'a>

§

impl<'a> Unpin for PdfPageTextObject<'a>

§

impl<'a> !UnwindSafe for PdfPageTextObject<'a>

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<'a, T> PdfPageObjectCommon<'a> for T
where T: PdfPageObjectPrivate<'a>,

Source§

fn has_transparency(&self) -> bool

Returns true if this PdfPageObject contains transparency.
Source§

fn bounds(&self) -> Result<PdfQuadPoints, PdfiumError>

Returns the bounding box of this PdfPageObject as a quadrilateral. Read more
Source§

fn transform_from( &mut self, other: &PdfPageObject<'_>, ) -> Result<(), PdfiumError>

Transforms this PdfPageObject by applying the transformation matrix read from the given PdfPageObject. Read more
Source§

fn set_blend_mode( &mut self, blend_mode: PdfPageObjectBlendMode, ) -> Result<(), PdfiumError>

Sets the blend mode that will be applied when painting this PdfPageObject. Read more
Source§

fn fill_color(&self) -> Result<PdfColor, PdfiumError>

Returns the color of any filled paths in this PdfPageObject.
Source§

fn set_fill_color(&mut self, fill_color: PdfColor) -> Result<(), PdfiumError>

Sets the color of any filled paths in this PdfPageObject.
Source§

fn stroke_color(&self) -> Result<PdfColor, PdfiumError>

Returns the color of any stroked paths in this PdfPageObject.
Source§

fn set_stroke_color( &mut self, stroke_color: PdfColor, ) -> Result<(), PdfiumError>

Sets the color of any stroked paths in this PdfPageObject. Read more
Source§

fn stroke_width(&self) -> Result<PdfPoints, PdfiumError>

Returns the width of any stroked lines in this PdfPageObject.
Source§

fn set_stroke_width( &mut self, stroke_width: PdfPoints, ) -> Result<(), PdfiumError>

Sets the width of any stroked lines in this PdfPageObject. Read more
Source§

fn line_join(&self) -> Result<PdfPageObjectLineJoin, PdfiumError>

Returns the line join style that will be used when painting stroked path segments in this PdfPageObject.
Source§

fn set_line_join( &mut self, line_join: PdfPageObjectLineJoin, ) -> Result<(), PdfiumError>

Sets the line join style that will be used when painting stroked path segments in this PdfPageObject.
Source§

fn line_cap(&self) -> Result<PdfPageObjectLineCap, PdfiumError>

Returns the line cap style that will be used when painting stroked path segments in this PdfPageObject.
Source§

fn set_line_cap( &mut self, line_cap: PdfPageObjectLineCap, ) -> Result<(), PdfiumError>

Sets the line cap style that will be used when painting stroked path segments in this PdfPageObject.
Source§

fn dash_phase(&self) -> Result<PdfPoints, PdfiumError>

Returns the line dash phase that will be used when painting stroked path segments in this PdfPageObject. Read more
Source§

fn set_dash_phase(&mut self, dash_phase: PdfPoints) -> Result<(), PdfiumError>

Sets the line dash phase that will be used when painting stroked path segments in this PdfPageObject. Read more
Source§

fn dash_array(&self) -> Result<Vec<PdfPoints>, PdfiumError>

Returns the line dash array that will be used when painting stroked path segments in this PdfPageObject. Read more
Source§

fn set_dash_array( &mut self, array: &[PdfPoints], phase: PdfPoints, ) -> Result<(), PdfiumError>

Sets the line dash array that will be used when painting stroked path segments in this PdfPageObject. Read more
Source§

fn is_copyable(&self) -> bool

👎Deprecated since 0.8.32: This function has been retired in favour of the PdfPageObject::copy_to_page() function.
Returns true if this PdfPageObject can be successfully copied by calling its try_copy() function. Read more
Source§

fn try_copy<'b>( &self, document: &'b PdfDocument<'b>, ) -> Result<PdfPageObject<'b>, PdfiumError>

👎Deprecated since 0.8.32: This function has been retired in favour of the PdfPageObject::copy_to_page() function.
Attempts to copy this PdfPageObject by creating a new page object and copying across all the properties of this PdfPageObject to the new page object. Read more
Source§

fn copy_to_page<'b>( &mut self, page: &mut PdfPage<'b>, ) -> Result<PdfPageObject<'b>, PdfiumError>

Copies this PdfPageObject object into a new PdfPageXObjectFormObject, then adds the new form object to the page objects collection of the given PdfPage, returning the new form object.
Source§

fn move_to_page(&mut self, page: &mut PdfPage<'_>) -> Result<(), PdfiumError>

Moves the ownership of this PdfPageObject to the given PdfPage, regenerating page content as necessary. Read more
Source§

fn move_to_annotation( &mut self, annotation: &mut PdfPageAnnotation<'_>, ) -> Result<(), PdfiumError>

Moves the ownership of this PdfPageObject to the given PdfPageAnnotation, regenerating page content as necessary. Read more
Source§

fn width(&self) -> Result<PdfPoints, PdfiumError>

Returns the width of this PdfPageObject.
Source§

fn height(&self) -> Result<PdfPoints, PdfiumError>

Returns the height of this PdfPageObject.
Source§

fn is_inside_rect(&self, rect: &PdfRect) -> bool

Returns true if the bounds of this PdfPageObject lie entirely within the given rectangle.
Source§

fn does_overlap_rect(&self, rect: &PdfRect) -> bool

Returns true if the bounds of this PdfPageObject lie at least partially within the given rectangle.
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.