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
Example
>>> from PyPDF2 import Transformation
>>> op = Transformation().scale(sx=2, sy=3).translate(tx=10, ty=20)
>>> page.add_transformation(op)
apply_on(pt: Union[Tuple[Decimal, Decimal], Tuple[float, float], List[float]])→ Union[Tuple[float, float], List[float]][source]
Apply the transformation matrix on the given point.
Parameters
pt – A tuple or list representing the point in the form (x, y)
Returns
A tuple or list representing the transformed point in the form (x’, y’)
staticcompress(matrix: Tuple[Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float]])→ Tuple[float, float, float, float, float, float][source]
Compresses the transformation matrix into a tuple of (a, b, c, d, e, f).
Parameters
matrix – The transformation matrix as a tuple of tuples.
Returns
A tuple representing the transformation matrix as (a, b, c, d, e, f)
propertymatrix: 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))
rotate(rotation: float)→ Transformation[source]
Rotate the contents of a page.
Parameters
rotation – The angle of rotation in degrees.
Returns
A new Transformation instance with the rotated matrix.
scale(sx: Optional[float] = None, sy: Optional[float] = None)→ Transformation[source]
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.
Parameters
sx – The scale factor along the x-axis.
sy – The scale factor along the y-axis.
Returns
A new Transformation instance with the scaled matrix.
translate(tx: float = 0, ty: float = 0)→ Transformation[source]
Translate the contents of a page.