Skip to content

Pagination

Advanced pagination features for multi-page documents.

RTFPagination

Main pagination controller for handling page breaks and content distribution.

Bases: BaseModel

Core pagination logic and calculations for RTF documents

calculate_available_space()

Calculate available space for content on each page

PageBreakCalculator

Calculates optimal page break positions.

Bases: BaseModel

Calculates where page breaks should occur based on content and constraints

calculate_content_rows(df, col_widths, table_attrs=None, font_size=9, spanning_columns=None)

Calculate how many rows each content row will occupy when rendered

Parameters:

Name Type Description Default
df DataFrame

DataFrame containing the content

required
col_widths Sequence[float]

Width of each column in inches

required
table_attrs TableAttributes | None

Table attributes containing cell height and font size info

None
font_size float

Default font size in points

9
spanning_columns Sequence[str] | None

Columns that should be treated as spanning the full width

None

Returns:

Type Description
Sequence[int]

List of row counts for each data row

calculate_row_metadata(df, col_widths, page_by=None, subline_by=None, table_attrs=None, removed_column_indices=None, font_size=9, additional_rows_per_page=0, new_page=False)

Generate complete row metadata for pagination.

find_page_breaks(df, col_widths, page_by=None, new_page=False, table_attrs=None, additional_rows_per_page=0)

Find optimal page break positions (r2rtf compatible)

Parameters:

Name Type Description Default
df DataFrame

DataFrame to paginate

required
col_widths Sequence[float]

Column widths in inches

required
page_by Sequence[str] | None

Columns to group by for page breaks

None
new_page bool

Whether to force new pages between groups

False
table_attrs TableAttributes | None

Table attributes for accurate row calculation

None
additional_rows_per_page int

Additional rows per page (headers, footnotes, sources)

0

Returns:

Type Description
Sequence[tuple[int, int]]

List of (start_row, end_row) tuples for each page