Wenn Du für jede Zeile prüfen kannst, ob sie noch auf die Seite passt, weißt Du ja (vermutlich) wieviel Platz noch ist.
Da Du Schriftgröße... vorgibst, weißt Du ja auch, wie hoch eine Überschrift, ein Absatz, eine Textzeile... ist.
Damit eine Überschrift plus mindestens eine Zeile Text auf eine Seite passt, muss ja ein bestimmter "Rest" auf der Seite noch frei sein.
Damit wäre doch bei der Prüfung, ob eine Zeile noch auf die Seite passt, nur ein "bisserl" Mathematik nötig.
Code:
if NeueZeile = Text and FreierPlatz > Textzeilenhöhe then
Ausgeben
end else
if NeueZeile = Überschrift and FreierPlatz > HöheAbsatzVorÜberschrift + Überschrifthöhe + Textzeilenhöhe then
Ausgeben
else
SeitenUmbruch
Ausgeben
end
Beim Setzen von Schriftart, Schriftgröße... müsstest Du Dir "einfach" entsprechende "Konstanten berechnen", mit denen Du vor der Ausgabe bereits prüfen kannst, ob der verbleibende Platz noch ausreicht.
(ist jetzt einfach mal so dahinspekuliert)