pyhanko.pdf_utils.text module

Utilities related to text rendering & layout.

class pyhanko.pdf_utils.text.TextStyle(font: Union[pyhanko.pdf_utils.font.FontEngine, Callable[[], pyhanko.pdf_utils.font.FontEngine]] = <factory>, font_size: int = 10, leading: Optional[int] = None)

Bases: pyhanko.pdf_utils.config_utils.ConfigurableMixin

Container for basic test styling settings.

font: Union[pyhanko.pdf_utils.font.FontEngine, Callable[], pyhanko.pdf_utils.font.FontEngine]]

The FontEngine to be used for this text style. Defaults to Courier (as a non-embedded standard font).


Not all FontEngine implementations are reusable and/or stateless! When reusability is a requirement, passing a no-argument callable that produces FontEngine objects of the appropriate type might help (see GlyphAccumulatorFactory).

font_size: int = 10

Font size to be used.

leading: int = None

Text leading. If None, the font_size parameter is used instead.

classmethod process_entries(config_dict)

Hook method that can modify the configuration dictionary to overwrite or tweak some of their values (e.g. to convert string parameters into more complex Python objects)

Subclasses that override this method should call super().process_entries(), and leave keys that they do not recognise untouched.


config_dict – A dictionary containing configuration values.


ConfigurationError – when there is a problem processing a relevant entry.

class pyhanko.pdf_utils.text.TextBoxStyle(font: Union[pyhanko.pdf_utils.font.FontEngine, Callable[[], pyhanko.pdf_utils.font.FontEngine]] = <factory>, font_size: int = 10, leading: Optional[int] = None, text_sep: int = 10, border_width: int = 0, vertical_center: bool = True)

Bases: pyhanko.pdf_utils.text.TextStyle

Extension of TextStyle for use in text boxes.

text_sep: int = 10

Separation of text from the box’s border, in user units.

border_width: int = 0

Border width, if applicable.

vertical_center: bool = True

Attempt to vertically center text if the box’s height is fixed.

class pyhanko.pdf_utils.text.TextBox(style: pyhanko.pdf_utils.text.TextBoxStyle, resources: Optional[pyhanko.pdf_utils.content.PdfResources] = None, box: Optional[pyhanko.pdf_utils.layout.BoxConstraints] = None, writer=None, font_name='F1')

Bases: pyhanko.pdf_utils.content.PdfContent

Implementation of a text box that implements the PdfContent interface.


Text boxes currently don’t offer automatic word wrapping.

property content_lines

Text content of the text box, broken up into lines.

property content

The actual text content of the text box. This is a modifiable property.

In textboxes that don’t have a fixed size, setting this property can cause the text box to be resized.

property leading

The effective leading value, i.e. the leading attribute of the associated TextBoxStyle, or font_size if not specified.


The text height in user units.


The x-position where the text will be painted.


The y-position where the text will be painted.


Compile the content to graphics operators.