Kopf und Fußzeile
SingleLady
- html
Hi,
Ich habe ein selbstgeschriebenes Rechnungsprogramm, welches Rechnungen druckt ;)
da kommen ab und zu auch mal 2 Seiten raus - Jetzt habe ich mit Page-Break meine Tabelle mit Leistungen an einer bestimmten Poistion umgebrochen - jetzt möchte ich aber, dass sich meine Kopf und Fußzeile wiederholt - wie kann ich das so Programmieren, dass diese immer an der selben Stelle stehen (Auf den Druck kommt es an, nicht auf die darstellung)
Vielen Dank
SingleLady
Hallo SingleLady,
Ich habe ein selbstgeschriebenes Rechnungsprogramm, welches Rechnungen druckt ;)
da kommen ab und zu auch mal 2 Seiten raus - Jetzt habe ich mit Page-Break meine Tabelle mit Leistungen an einer bestimmten Poistion umgebrochen - jetzt möchte ich aber, dass sich meine Kopf und Fußzeile wiederholt - wie kann ich das so Programmieren, dass diese immer an der selben Stelle stehen (Auf den Druck kommt es an, nicht auf die darstellung)
Hast du denn deine Kopf- und Fußzeilen ordentlich definiert?
Von einem ordentlichen Browser würde ich erwarten, dass wenn beim Ausdruck die Tabelle mehr als eine Seite beansprucht, diese Kopf- und Fußzeilen wiederholt werden; sonst hätten diese Elemente ja kaum einen Sinn, da würden mir sonst einfach auch TH-Zellen am Kopf und am Fuß der Tabelle reichen.
Ausprobiert habe ich das mit dem Ausdruck einer mit THEAD-, TFOOT- und TBODY-Elementen definierten Tabelle noch nicht und ich finde auch nichts in den Specs zu dem Thema, wie sie sich beim Ausdrucken verhalten sollte.
http://www.w3.org/TR/html401/struct/tables.html#edef-THEAD
Berichte mal über deine Erfahungen beim Ausdrucken deiner Riesentabelle mit unterschiedlichen Browsern, wenn du sie so definiert hast.
Gruß Gernot
Hallo!
Hast du denn deine Kopf- und Fußzeilen ordentlich definiert?
Von einem ordentlichen Browser würde ich erwarten, dass wenn beim Ausdruck die Tabelle mehr als eine Seite beansprucht, diese Kopf- und Fußzeilen wiederholt werden; sonst hätten diese Elemente ja kaum einen Sinn, da würden mir sonst einfach auch TH-Zellen am Kopf und am Fuß der Tabelle reichen.
Berichte mal über deine Erfahungen beim Ausdrucken deiner Riesentabelle mit unterschiedlichen Browsern, wenn du sie so definiert hast.
Ich denke die Frage hat sich ein breiteres Publikum verdient:
Ich habe den Code aus dem Beispiel um einen Seitenumbruch erweitert:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Kopf, Körper und Fuß einer Tabelle definieren</title>
</head>
<body>
<h1>Betroffene Menschen</h1>
<table border="1" rules="groups">
<thead>
<tr>
<th>Assoziation 1</th>
<th>Assoziation 2</th>
<th>Assoziation 3</th>
</tr>
</thead>
<tfoot>
<tr>
<td><i>betroffen:<br>4 Mio. Menschen</i></td>
<td><i>betroffen:<br>2 Mio. Menschen</i></td>
<td><i>betroffen:<br>1 Mio. Menschen</i></td>
</tr>
</tfoot>
<tbody>
<tr>
<td>Berlin</td>
<td>Hamburg</td>
<td>München</td>
</tr><tr style="page-break-before:always">
<td>Miljöh</td>
<td>Kiez</td>
<td>Bierdampf</td>
</tr><tr>
<td>Buletten</td>
<td>Frikadellen</td>
<td>Fleischpflanzerl</td>
</tr>
</tbody>
</table>
</body>
</html>
Ich hab das jetzt mal mit 2 Browsern getetestet:
(Mehr hab ich da im Moment nicht.)
IE 6.0.2800 ignoriert das,
Firefox 1.0.7 wiederholt zwar die Titelzeile richtig, von der Fußzeile kommt aber nur die erste Zeile also "betroffen:" der Rest (also das interessante) kommt dann erst auf der zweiten Seite.
Wie verhalten sich andere Browser?
Viele Grüße
H-P Ortner
Hallo
Ich hab das jetzt mal mit 2 Browsern getetestet:
IE 6.0.2800 ignoriert das,
Firefox 1.0.7 wiederholt zwar die Titelzeile richtig, von der Fußzeile kommt aber nur die erste Zeile also "betroffen:" der Rest (also das interessante) kommt dann erst auf der zweiten Seite.
Jetzt habe ich noch ein paar probiert:
Firefox 1.0.8 verhält sich wie 1.0.7
Mozilla 1.7.13 verhält ich auch wie Firefox
Epiphany 1.8.2 (vewendet die gleiche Technik) verhält sich auch so
Konqueror 3.4.3 ignoriert den Seitenumbruch überhaupt
Writer aus OppenOffice.org 2.0 ignoriert den Seitenumbruch auch
Lynx 2.8.5 stellt tfoot vor tbody dar und ignoriert den Seitenumbruch auch (vermutlich weil ein Seitenumbruch bei einzeiliger Darstellung ohnehin nichts bringt)
Was schließe ich daraus?
Da nicht einmal der Seitenumbruch wirklich funktioniert, sollte man nicht versuchen Drucklayout mit HTML zu erstellen, sondern dafür ein Dateiformat ververwenden, das dafür geschaffen wurde. Und davon gibt es ja genügend.
Wenn ich etwas übersehen habe, würde es mich freuen, wenn da noch Hinweise kommen. Die Entscheidung, hält ja wieder ein paar Jahre und da sollte ich nichts wichtiges übersehen.
Viele Grüße
H-P Ortner
Hi,
Ausprobiert habe ich das mit dem Ausdruck einer mit THEAD-, TFOOT- und TBODY-Elementen definierten Tabelle noch nicht und ich finde auch nichts in den Specs zu dem Thema, wie sie sich beim Ausdrucken verhalten sollte.
http://www.w3.org/TR/html401/struct/tables.html#edef-THEAD
Hm. Du verlinkst aber auf die Stelle, wo das beschrieben steht (erster Textabsatz, letzter Satz):
When long tables are printed, the table head and foot information may be repeated on each page that contains table data.
cu,
Andreas
Hallo Andreas,
When long tables are printed, the table head and foot information may be repeated on each page that contains table data.
Ich würde mir was Verbindlicheres als "May-be" wünschen; wofür sollten diese Elemente sonst dienen, als dass sie beim Ausdruck wiederholt werden MÜSSEN?
Nun gut, das Einzige was ich mir sonst noch als Sinn und Zweck vorstellen könnte wäre, dass bei der CSS-Einstellung table-layout:fixed
in Bezug auf das TABLE-Element das TFOOT-Element bereits im Medium Screen sichtbar wäre, während bei einer extrem langen Tabelle der Rest des TBODY-Elements zwischen THEAD und TFOOT noch Stück für Stück geladen würde.
Gruß Gernot
Hi,
Nun gut, das Einzige was ich mir sonst noch als Sinn und Zweck vorstellen könnte wäre, dass bei der CSS-Einstellung
table-layout:fixed
in Bezug auf das TABLE-Element das TFOOT-Element bereits im Medium Screen sichtbar wäre, während bei einer extrem langen Tabelle der Rest des TBODY-Elements zwischen THEAD und TFOOT noch Stück für Stück geladen würde.
table-layout:fixed betrifft nur die Breite der Tabelle.
cu,
Andreas
Hallo MudGuard,
table-layout:fixed betrifft nur die Breite der Tabelle.
Da irrst du!
"You can optimize table rendering performance by specifying the tableLayout property. This property causes Microsoft Internet Explorer to render the table one row at a time, providing users with information at a faster pace."
Gruß Gernot
Hi,
table-layout:fixed betrifft nur die Breite der Tabelle.
Da irrst du!
Fixed table layout
With this (fast) algorithm, the horizontal layout of the table does not depend on the contents of the cells; it only depends on the table's width, the width of the columns, and borders or cell spacing.
Das ist nur eine Folge. Weil von Anfang an feststeht, wie breit die Spalten sind, kann der Browser alle Zeilen sofort rendern.
Ohne table-layout:fixed steht erst nach Empfang aller Zeilen fest, wie breit welche Spalte wird. Und um dann nicht ständig neu rendern zu müssen, wird die Tabelle eben erst nach der letzten Zeile gerendert.
Hätte table-layout:fixed auch Auswirkungen auf die Höhe, würde bereits nach der ersten Zelle jeder Zeile die Höhe der Zeile feststehen, und es könnte Zelle für Zelle gerendert werden, ohne daß späteres Re-Rendering nötig wäre ...
Ganz abgesehen davon:
Das, was Microsoft schreibt oder macht, ist irrelevant.
Oder bist Du etwa z.B. der Meinung, daß :hover nur für Links gilt, nur weil der IE nicht in der Lage ist, das korrekt umzusetzen?
Oder daß das box-model besagt, daß width die Gesamtbreite des Elements darstellt, nur weil der IE das anders macht als alle richtigen Browser?
Oder ...
cu,
Andreas
Hallo MudGuard,
table-layout:fixed betrifft nur die Breite der Tabelle.
Da irrst du!
Das ist nur eine Folge. Weil von Anfang an feststeht, wie breit die Spalten sind, kann der Browser alle Zeilen sofort rendern.
Ja klar, und deshalb funktioniert das meines Wissens auch in anderen Browsern.
Das, was Microsoft schreibt oder macht, ist irrelevant.
Nein, ist es nicht, denn es ist der Marktführer. Und wie gesagt andere Browser machen es ja ebenso, wenn ich das richtig beobachte ... (der Ladevorgang geht mit DSL ja selbst bei Riesentabellen so schnell)
Also alles nochmal auf Anfang: Was sollten die Elemente THEAD und TFOOT für eine Bedeutung haben, als dass sie beim Ausdruck bei Durchschneiden einer Tabelle durch Seitenumbruch wiederholt würden?
Die einzige kleine (ziemlich marginale) Existenzberechtigung, die ich mir noch vorstellen könnte ist beim TFOOT-Element, da es ja im Quellcode vor dem TBODY-Element definiert werden muss, dass dieses bereits angezeigt werden kann, bevor das TBODY-Element vollständig geladen ist, vorausgesetzt, man setzt table-layout auf fixed, denn ansonsten kann die ganze Tabelle erst angezeigt werden, wenn sie komplett geladen ist und eben nicht "one row at a time".
Gruß Gernot
Hallo.
Was sollten die Elemente THEAD und TFOOT für eine Bedeutung haben, als dass sie beim Ausdruck bei Durchschneiden einer Tabelle durch Seitenumbruch wiederholt würden?
Und was sollte die Bedeutung mit der Darstellung zu tun haben?
MfG, at
Hallo,
Hab mich anscheinend doof ausgedrückt...
Möchte nicht innerhalb einer Tabelle Kopf- und Fußzeilen definieren, sondern zb über einen DIV-Container den ich absolut definiere
"...top: 20px; left: 200; print-repeat: on-every-site" (keine ahnung wie ich es sonst verdeutlichen kann :D )
SingleLady
Hi,
"...top: 20px; left: 200; print-repeat: on-every-site" (keine ahnung wie ich es sonst verdeutlichen kann :D )
och, das ist schon sehr deutlich... und nein: so etwas ist in CSS nicht vorgesehen. Du wirst nicht umhin kommen, diese Zeilen an den geeigneten Stellen mehrfach in den Quelltext zu setzen; über CSS kannst Du sie dann ja für die Bildschirmanzeige ausblenden und für den Ausdruck einen Seitenumbruch angeben.
freundliche Grüße
Ingo
Ja,
und wie?
Wenn ich das absolut positionieren will geht das ab der 2 . seite nicht mehr....
ich es also direkt im HTML CODE machen oder oder oder oder oder??
SingleLady
Hi,
und wie?
Wenn ich das absolut positionieren will geht das ab der 2 . seite nicht mehr....
Du solltest natürlich nur für die Bildschirmanzeige absolute Positionierung verwenden (oder besser ganz darauf verzichten).
ich es also direkt im HTML CODE machen oder oder oder oder oder??
na klar:
<h1>Überschrift</h1> ... <h1 class="Wiederholung">Überschrift</h1>
h1.Wiederholung {display:none;}
@media print {
h1.Wiederholung {display:block; page-break-before:always;}
}
freundliche Grüße
Ingo
Hallo.
wie kann ich das so Programmieren, dass diese immer an der selben Stelle stehen
Durch den Verzicht auf HTML/CSS zugunsten einer dafür geeigneten Technik, etwa PDF.
(Auf den Druck kommt es an, nicht auf die darstellung)
Der Druck ist die Darstellung.
MfG, at