Sergeij_Molotow: Seitenumbruch nach Tabellenspalten (Druck)

Liebe Gemeinde,

ich suche eine Lösung für folgendes Problem:

Ich habe ein HTML-Dokument auf dem sich eine Tabelle befindet, die sehr viele Spalten hat, so dass die Tabelle beim Ausdruck nicht auf eine DIN-A4 Seite passen würde. Ich möchte die Tabelle gern aller 10 Spalten (Beispiel) aufteilen und den neuen Teil jeweils auf einer neuen Seite ausdrucken.

Ich finde im Netz zwar die Möglichkeit per CSS ein page-break-after zu notieren, aber es scheint mit <td>-Elementen nicht zu arbeiten. Mein Gedanke hier war, jeder Zelle nach einer bestimmten Anzahl von Zeilen und eben jenen 10 Spalten eine Klassennotation (class="Druck") mitzugeben und dadurch sozusagen das rechte untere Ende festzulegen, nach dem ein Seitenumbruch erfolgen sollte. Klappt so leider nicht. :(

Ich würde mich freuen, an dieser Stelle weiter zu lernen und einen Tipp zu bekommen, wie es gehen könnte.

Dazu muss ich sagen, dass das HTML-Dokument ein Ergebnis eines Datenexports ist und gleichzeitig auch wieder importiert werden kann, was zur Folge hat, dass die Idee, die Tabelle einfach in mehrere Tabellen (<table>-Elemente) aufzusplitten leider nicht mit der zukünftigen Nutzung zusammenpasst.

Ich hoffe, dass ich mein Problem verständlich ausgedrückt habe und freue mich über deine Hilfe.

Grüße aus Dresden Erik

  1. Hallo Erik,

    kennst Du das hier? Insbesondere die break-* Eigenschaften, die allgemeiner sind als page-break-*.

    Wenn du mit den Einschränkungen leben kannst, ist es vielleicht eine Option für Dich.

    Gruß
    Rolf

  2. Hallo

    Aus deiner Beschreibung ist die Tabelle leider nicht nachvollziehbar. Zum Beispiel wie breit die Zellen sind. Oder die Spalten- und Zeilenüberschriften. Ob Bilder vorhanden sind. Und und und ...

    Hast du einen Link zu der Seite oder kannst du eine Beispieltabelle bereitstellen? Ich denke, dass dir im Endeffekt besser mit konkreten Beispielen als mit allgemeinen Hinweisen geholfen werden kann. Dazu benötigen wir aber eine konkrete Grundlage.

    Gruss

    MrMurphy

  3. Idee ohne Erfolgsgarantie:

    • colgroup benutzen und den entsprechenden Spalten (Element: col) mit break-before bzw. break-after die CSS-Eigenschaft für den Umbruch mitgeben.
    • in den Zeilen (Element: tr) mit break-before bzw. break-after die CSS-Eigenschaft für den Umbruch mitgeben.

    Das sind nur Ideen. Ganz generell ist HTML keine Eierlegende Wollmilchsau die als Beschreibungssprache sowohl für perfekte

    • Anzeige auf dem Bildschirm
    • Drucklayouts
    • Datenexport und Import

    gedacht war. Da sind besonders in Deinem Fall eine Menge Krücken nötig und ob das dann mit allen und womöglich auch noch alten Browsern (und dann noch "User-Agenten" bzw. "Clients" wie Excel) funktioniert ist höchst fraglich.

    Im Zweifelsfall oder für perfekte Ergebnisse:

    • Einen perfekte Ausgabeform für den Datenexport in einem der folgenden Formate:

      • Text/CSV,
      • Text/JSON
      • Text/XML
    • Eine spezielle Ausgabeform für die Anzeige am Bildschirm:

      • Text/HTML
    • Eine perfekte Ausgabeform für das Drucken:

      • generiere aus den Daten ein (La)TeX-Dokument und mit pdflatex oder pdfTeX daraus eine PDF-Datei.

    Krücke:

    Und dann wäre da noch Javascript mit dem sich auch eine Tabelle "durchackern" und Zeilen bzw. spaltenweise auf mehrere Tabellen aufteilen lässt. Das aber weit weg von "ideal".

    Billiger Mittelweg:

    Und wenn wir schon dabei sind: Was hindert Dich daran, für die Druckausgabe eine zweite Version des Skriptes zu erschaffen, welches die Daten brav auf mehrere Tabellen verteilt? Das würde ich (nach Bedenken der vom Ergebnis her besten Möglichkeit, ideale Ausgabeformate zu wählen) als einfache und wahrscheinlich billigste Lösung erwägen. Dazu auch gleich die spezielle Ausgabe für den Datenexport als CSV, JSON oder XML - die übrigens nichts anderes als eine wunderbare Abkürzung des Wegs zum HTML-Dokument ist.

    "Schweizermesser" haben für alles eine Klinge. Allerdings darf man nicht erwarten, dass diese funktionieren wie ein Spezialwerkzeug. Das gilt auch für HTML - welches nicht als "Schweizermesser" gedacht war, aber missbraucht wird.