Wenn Sie nur Firefox unterstützen, ist dies eigentlich wirklich einfach (überspringen eine Technik zum Bearbeiten zu sehen, dass funktioniert auch im IE, ist aber weniger vielseitig). Fügen Sie einfach einen großen unteren Rand am Ende Ihres Inhalts hinzu. Es muss groß genug sein, um garantiert über das Ende der Seite hinaus zu laufen. Der Browser geht davon aus, dass Sie keine leere Seite am Ende Ihres Dokuments drucken möchten. Daher wird so viel Rand wie nötig abgeschnitten, um dies zu vermeiden. Halten Sie gerade genug, um Ihre Fußzeile an den unteren Rand der Seite zu verschieben.
Sie können den Rand auf eine pseudo-element setzen, um Ihr HTML sauber zu halten, und Sie können @media print
verwenden, um zu verhindern, dass es auf dem Bildschirm angezeigt wird.
Hier ist der Code. Um zu sehen, wie es in Firefox funktioniert, öffnen Sie this jsfiddle, klicken Sie mit der rechten Maustaste auf die Ausgabe, wählen Sie This Frame> Nur diesen Frame anzeigen, und führen Sie eine Druckvorschau durch.
@media print {
#content:after {
display: block;
content: "";
margin-bottom: 594mm; /* must be larger than largest paper size you support */
}
}
<table>
<thead>
<tr>
<th>PAGE HEADER</th>
</tr>
</thead>
<tfoot>
<tr>
<td>PAGE FOOTER</td>
</tr>
</tfoot>
<tbody>
<tr>
<td id="content">
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content
</td>
</tr>
</tbody>
</table>
Diese Technik funktioniert nicht in jedem Browser, aber Firefox. In IE, wenn ein Seitenumbruch in einem vertikalen Rand auftritt, wird der gesamte Rand entfernt - was ist eigentlich das richtige Verhalten according to the W3C (Abschnitt 13.3.3) - aber keine Sorge, das Verhalten von Firefox ist effektiv identisch, außer wenn es ein Tischfuß, und in diesem Fall ist es tatsächlich besser, also bezweifle ich, dass es sich jemals ändern wird.
Chrome und die anderen Webkit-Browser (Safari, Opera) unterstützen nicht einmal Fußzeilen, sind also irrelevant. Ich denke, ich habe diesen Ansatz in Edge nicht getestet, aber ich bin mir ziemlich sicher, dass es nicht funktionieren wird.
EDIT
Es gibt eine andere Option, die in Firefox und IE funktioniert. Alles, was Sie tun müssen, ist die Fußzeile in eine separate <div>
und fixieren Sie es am unteren Rand der Seite, und verwenden Sie dann die Wiederholung <tfoot>
als Abstandhalter. Dieser Ansatz hat jedoch einige kleinere Nachteile (Details unten).
Hier ist der Code. Um zu sehen, wie es in Firefox funktioniert, öffnen Sie this jsfiddle, klicken Sie mit der rechten Maustaste auf die Ausgabe, wählen Sie This Frame> Nur diesen Frame anzeigen, und führen Sie eine Druckvorschau durch. Klicken Sie im IE im Ausgabefenster auf, drücken Sie STRG + A, führen Sie eine Druckvorschau durch und ändern Sie "Wie auf dem Bildschirm ausgebreitet" auf "Wie auf dem Bildschirm ausgewählt".
@media print {
#spacer {height: 2em;} /* height of footer + a little extra */
#footer {
position: fixed;
bottom: 0;
}
}
<table>
<thead>
<tr>
<th>PAGE HEADER</th>
</tr>
<thead>
<tfoot>
<tr>
<td id="spacer"></td>
</tr>
</tfoot>
<tbody>
<tr>
<td>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content<br>
content<br>content<br>content<br>content<br>content<br>content<br>content
</td>
</tr>
</tbody>
</table>
<div id="footer">
PAGE FOOTER
</div>
Die wichtigste Einschränkung dieses Verfahrens ist, dass es auf jeder Seite in dem Druckauftrag eine identische Fußzeile setzt, was bedeutet, Sie keine Seiten mit einer anderen Fußzeile haben können, oder nicht Fußzeile. Da die Höhe des Abstandshalters von der Höhe der Fußzeile abhängt, müssen Sie sie anpassen, wenn sich die Fußzeilenhöhe ändert.
Bitte jsfiddle bieten. – Alex
Nur ein JSFiddle hinzugefügt. Wie funktioniert es für Druckvorschau? – LeMike
Sie können die einzelne Ergebnisseite sehen, wenn Sie mit der rechten Maustaste auf das Ausgabefenster -> This Frame -> Open Frame in New Tab klicken. Die Druckvorschau funktioniert dann wie gewohnt. –