Transformation 类

class pypdf.Transformation(ctm: Tuple[float, float, float, float, float, float] = (1, 0, 0, 1, 0, 0))[源代码]

基类:object

Represent a 2D transformation.

The transformation between two coordinate systems is represented by a 3-by-3 transformation matrix matrix with the following form:

a b 0
c d 0
e f 1

Because a transformation matrix has only six elements that can be changed, it is usually specified in PDF as the six-element array [ a b c d e f ].

Coordinate transformations are expressed as matrix multiplications:

                            a b 0
[ x′ y′ 1 ] = [ x y 1 ] ×   c d 0
                            e f 1

示例

>>> from pypdf import Transformation
>>> op = Transformation().scale(sx=2, sy=3).translate(tx=10, ty=20)
>>> page.add_transformation(op)
property matrix: Tuple[Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float]]

Return the transformation matrix as a tuple of tuples in the form:

((a, b, 0), (c, d, 0), (e, f, 1))

static compress(matrix: Tuple[Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float]]) Tuple[float, float, float, float, float, float][源代码]

Compresses the transformation matrix into a tuple of (a, b, c, d, e, f).

参数:

matrix -- The transformation matrix as a tuple of tuples.

返回:

A tuple representing the transformation matrix as (a, b, c, d, e, f)

transform(m: Transformation) Transformation[源代码]

Apply one transformation to another.

参数:

m -- a Transformation to apply.

返回:

A new Transformation instance

示例

>>> from pypdf import Transformation
>>> op = Transformation((1, 0, 0, -1, 0, height)) # vertical mirror
>>> op = Transformation().transform(Transformation((-1, 0, 0, 1, iwidth, 0))) # horizontal mirror
>>> page.add_transformation(op)
translate(tx: float = 0, ty: float = 0) Transformation[源代码]

Translate the contents of a page.

参数:
  • tx -- The translation along the x-axis.

  • ty -- The translation along the y-axis.

返回:

A new Transformation instance

scale(sx: float | None = None, sy: float | None = None) Transformation[源代码]

Scale the contents of a page towards the origin of the coordinate system.

Typically, that is the lower-left corner of the page. That can be changed by translating the contents / the page boxes.

参数:
  • sx -- The scale factor along the x-axis.

  • sy -- The scale factor along the y-axis.

返回:

A new Transformation instance with the scaled matrix.

rotate(rotation: float) Transformation[源代码]

Rotate the contents of a page.

参数:

rotation -- The angle of rotation in degrees.

返回:

A new Transformation instance with the rotated matrix.

apply_on(pt: List[float], as_object: bool = False) List[float][源代码]
apply_on(pt: Tuple[float, float], as_object: bool = False) Tuple[float, float]

Apply the transformation matrix on the given point.

参数:

pt -- A tuple or list representing the point in the form (x, y)

返回:

A tuple or list representing the transformed point in the form (x', y')