Christoph Mueller: Seitenumbruch in Tabelle verhindern

Hi

Ich arbeite zur Zeit an einer Seite, die im Intranet gedruckt werden soll. Sie enthält mehrere Tabellen variabler Länge, die beim Drucken oft mittendrin durchgeschnitten werden.

Manchmal kommt sogar nur die erste oder letzte Zeile auf ein Blatt, oder es wird mitten in einer Zelle durchgeschnitten.

Ich habe alles mögliche probiert:
CSS page-break-before, -inside und -after auf avoid gesetzt, für die ganze Tabelle, für jede einzelne Zelle, für ein span-tag, das jede Tabelle umschließt.

IE 5.0 bis 6.0 scheint aber diese Angaben komplett zu ignorieren.
Auch mit Mozilla hatte ich kein Glück.

Die derzeitige Lösung ist, dass nach jeder Tabelle ein nicht druckbarer Link kommt, der per Klick an der jeweiligen Stelle per Javascript einen Seitenumbruch einfügt, so dass der Benutzer selbst entscheiden kann wo umgebrochen wird. nicht gerade optimal :(

Ich habe überlegt, ob ich die Position jeder Tabelle per javascript mit .clientTop abfragen könnte und dann bei Bedarf einen Umbruch einfüge. Das wäre eine unelegante, feheranfällige, proprietäre und beschissene Lösung, aber es wäre eine Lösung.

Ich könnte das ganze mit ASP nach PDF konvertieren. Allerdings habe ich sowas noch nie gemacht, und die entsprechende Seite wird ziemlich kompliziert aus einer Datenbank generiert.

Ich habe versucht, die HTML-Seite in Word zu öffnen, aber das schmeißt sämmtliche Formatierungen durcheinander.

Gibt es noch IRGENDEINEN anderen Weg?
Ich hab jetzt stundenlang nach einer guten Lösung gesucht und bin am verzweifeln

Vielen Dank

  1. Tach,

    Ich habe alles mögliche probiert:
    CSS page-break-before, -inside und -after auf avoid gesetzt, für die ganze Tabelle, für jede einzelne Zelle, für ein span-tag, das jede Tabelle umschließt.

    span ist ein inline-Element, das auch nur inline-Elemente enthalten darf.
    table ist kein inline-Element, sondern ein block-Element.

    Da Deine Konstruktion also ziemlich abenteuerlich ist, würd ich das als allererstes mal korrigieren.
    Denn es kann sein, daß so ein Unsinn die Browser total durcheinanderbringt...

    Andreas

    1. Tach,

      Ich habe alles mögliche probiert:
      CSS page-break-before, -inside und -after auf avoid gesetzt, für die ganze Tabelle, für jede einzelne Zelle, für ein span-tag, das jede Tabelle umschließt.

      span ist ein inline-Element, das auch nur inline-Elemente enthalten darf.
      table ist kein inline-Element, sondern ein block-Element.

      Da Deine Konstruktion also ziemlich abenteuerlich ist, würd ich das als allererstes mal korrigieren.
      Denn es kann sein, daß so ein Unsinn die Browser total durcheinanderbringt...

      Andreas

      Danke für den Tip, aber wenn ich span weglasse, oder stattdessen div verwende, tuts auch nicht :(

      1. Hallo,

        meiner Erfahrung nach ist Opera 6 der zur Zeit einzige Browser, der solches unterstützt - und zwar mit "page-break-inside: avoid". Ich weiß allerdings nicht mehr, ob eine Zuweisung auf die Tabelle reicht, oder ob das auch auf die TRs, TDs oder THs angewendet werden muss.

        Habe IE 6, Netscape 6 und Opera 6 getestet.

        m.