page-break-after / page-break-before funktioniert nicht (immer)

  • Hallo zusammen,


    ich habe ein Skript, das verschiedene Briefe erzeugt und diese untereinander ausgibt.
    Ich möchte nun, dass jeder Brief auf einer separaten Seite beginnt.


    Hier ist der HTML-Code für einen einzelnen Brief.
    Je nachdem wieviele Briefe in dem Skript für den Druck ausgewählt wurden, wiederholt sich der Code entsprechend oft hintereinander.


    <div id="brief">
    <div id="adresszeile">
    <div id="absender">Max Mustermann- Musterstr.12 - Musterhausen</div>
    <div id="empfaenger">
    Boto Sakautzky<br>
    Gaisfeldweg 37<br>
    91550 Dinkelsbühl<br>
    </div>
    </div>
    <div id="header">
    <h1>Überschrift 1</h1>
    <h2>Überschrift 2</h2>
    </div>
    <div id="body">
    <h3>Überschrift</h3>
    <p>Mustertzext</p>
    <table>
    <tr>
    <th>Spalte 1</th>
    <th>Spalte 2</th>
    </tr>
    <tr>
    <td>Zelle 1</td>
    <td>Zelle 2</td>
    </tr>
    </table>
    </div>
    </div>


    Jeder Brief enthält, wie man sieht auch noch eine mehr oder weniger lange Tabelle.
    Damit jeder Brief immer auf einer neuen Seite beginnt, habe ich im Stylesheet folgende Zeile eingebaut:


    @media print {
    #brief {
    break-before:always;
    }
    }


    Das funktioniert auch solange, bis die Tabelle eine gewisse Größe überschreitet und der entsprechende Brief dann nicht mehr auf eine Seite passt.
    In dem Fall steht der Rest der Tabelle dann auf der nächsten Seite und - hier liegt das Problem: Der nächste Brief beginnt direkt nach der Tabelle, d.h. NICHT auf einer neuen Seite.


    Ich habe im Stylesheet auch schon "page-break-before" versucht und "page-break-after" und "break-after".
    Leider ändert sich nichts.


    Hat jemand einen Tipp, wo mein Fehler liegen könnte??


    Viele Grüße


    Daniel

  • Hallo


    Ein Link zu deiner Seite wäre besser als die paar Quellcodeschnipsel.


    Insgesamt ist die Unterstützung der Browser für page-break leider noch sehr durchwachsen.


    http://caniuse.com/#search=page-break


    In der Praxis sollte diese CSS-Anweisung also nicht verwendet werden. Und du solltest deine Seite in möglichst vielen Browsern testen.


    ID dürfen auf einer Webseite nur einmal verwendet werden. In der Regel hat die Mehrfachverwendung zwar keine negativen Auswirkungen, einige Browser können sich daran aber stören und Layoutprobleme bereiten.


    Gruss


    MrMurphy

  • Hallo
    Ein Link zu deiner Seite wäre besser als die paar Quellcodeschnipsel.


    In dem Fall handelt es sich leider um einen passwortgeschützten Bereich.



    In der Praxis sollte diese CSS-Anweisung also nicht verwendet werden. Und du solltest deine Seite in möglichst vielen Browsern testen.


    Gibts eine Alternative, die in allen Browsern funktioniert? Wie gesagt will ich einfach, dass jeder Div der ID BRIEF (bzw. der Class ID, habs grad geändert...funktioniert leider trotzdem nicht) auf einer neuen Seite anfängt.


    Viele Grüße


    Daniel

  • Das Skript erzeugt persönliche Daten (Briefe an Mitglieder eines Vereins) und das kann ich nicht in einem öffentlichen Forum zeigen.


    Aber das soll ja auch nicht Thema des Beitrags sein.
    Mich würde einfach nur interessieren, wie man erreichen kann, dass eine DIV via CSS immer auf einer separaten Seite ausgedruckt wird.
    Das muss doch irgendwie möglich sein...wenn nicht mit page-break...womit dann?


    Bin für jeden Tipp dankbar.


    Grüßle


    Daniel

  • Hallo


    Zitat

    Das Skript erzeugt persönliche Daten (Briefe an Mitglieder eines Vereins) und das kann ich nicht in einem öffentlichen Forum zeigen.


    Du hast aber schon gelesen


    Zitat

    Die Inhalte kannst du anonymisieren.


    Es sollten halt nur alle HTML-Elemente vorkommen (z. B. table), die in der Praxis auch vorkommen und der Inhalt sollte einen ähnlichen Umfang haben.


    Dabei war es mir eigentlich schon peinlich extra darauf hinzuweisen.


    Zitat

    Das muss doch irgendwie möglich sein.


    Allgemein habe ich die Frage bereits beantwortet. Für eine konkrete Lösung benötigen wir konkrete Beispiele.


    Bei HTML / CSS spielen viele Faktoren zusammen. Es ist halt auch nervig korrekte Lösungen zu nennen und die Rückmeldung zu erhalten, die Lösung sei falsch und funktioniere nicht. Meist stellt sich dann heraus, das der Fragende einfach damit überfordert war, die Lösung in seine Seite zu integrieren.


    Gruss


    MrMurphy

  • Ich programmiere nun schon seit ca. 15 Jahren Internetanwendungen, glaub mir: Ich bin nicht überfordert, einen Lösung in eine Seite zu integrieren.
    In dem Fall hast du aber noch keine Lösung angeboten, die ich integrieren könnte. Du hast lediglich geschrieben, dass


    - page-break noch nicht von allen Browser(-Versionen) unterstützt wird
    - dass man diese CSS-Anweisung nicht verwenden soll --> Du hast aber auch keine Alternative genannt
    - dass ich das Skript posten soll (was ich eben nicht KANN, weil persönliche Daten drin stehen..und was nebenei mit der Problemlösung auch überhaupt nichts zu tun hat)
    - dass IDs nur einmal verwendet werden sollen --> Ich hab ID in class geändert (und auch die CSS mit div.brief entsprechend angepasst)


    Irgendwie ist es immer das gleiche mit den Internetforen.


    Man stellt eine konkrete Frage und wird dann entweder:


    - auf die Suchfunktion des Forums hingewiesen
    - auf Google verwiesen
    - oder es artet in einen Threadbasierten Streit aus


    Ich hab doch eine ganz konkrete Frage gestellt: Wie kann man erreichen, dass der Inhalt einer DIV beim Ausdrucken immer auf einer neuen Seite beginnt.


    Ich kapier also das Problem nicht, vor allem warumman immer gleich genervt reagiert.
    Ein Forum ist dazu da, um anderen zu helfen. Wenn man daran kein Interesse hat, sollte man eben nicht in einem Forum tätig sein, sorry.


    Viele Grüße


    Daniel