HAVIT Knowledge Base

Vývoj webových aplikací, .NET, SQL, návrh
Welcome to HAVIT Knowledge Base Sign in | Join | Help
-
Home Články Forums Obrázky Soubory

(D)HTML

Dynamic HTML, XHTML, CSS, client scripts

Tisk dlouhých tabulek - záhlaví a zápatí na každé stránce

Poměrně neznámým fíglem lze v některých browserech zajistit, aby se při tisku dlouhých tabulek, které se nevejdou na jednu stránku, vytiskly určité jejich řádky na každé stránce (záhlaví a zápatí).

Stačí využít sekce tabulky thead a tfoot a nastavit jim ty správné styly.

...
<style type="text/css">
   thead {display: table-header-group;}
   tfoot {display: table-footer-group;}
</style>
...
<table>
   <thead>
      <tr>
         <td>Hlavička 1</td>
         <td>Hlavička 2</td>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>123</td>
         <td>456</td>
      </tr>
      ...
   </tbody>
   <tfoot>
      <tr>
         <td>Patička 1</td>
         <td>Patička 2</td>
      </tr>
   </tfoot>
</table>

Odzkoušeno to mám pozitivně v Internet Exploreru 6 a Mozille FF 1.0.7, Opera 8.54 negativní.

Svůj prohlížeč si můžete ověřit náhledem tisku k jednoduché ukázce:

Tisk-tabulky-hlavicka-paticka.htm

Published 1. června 2006 21:31 by Robert Haken
Filed under: ,

Attachment(s): Tisk-tabulky-hlavicka-paticka.htm

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

Robert Haken said:

Tomáš Zeman v konferenci microsoft.public.cs.developer popisuje ještě jednu tiskovou metodiku využívající expressions v CSS. Zatím jsem to nezkoušel, nicméně si to dovoluji sem poznamenat, třeba se to bude v budoucnu hodit:

chce to trochu experimentovania, ale mohlo by to vyzerat nejako takto(blind
code)(predpokladajme ze tables su top level elementy). Ak nepouzijete
expressions, tak mozete urobit getElementsByTagName a enumerovat sa cez
jednotlive tables.

page-break-before:expression(this.top % PAGE_HEIGHT + this.offsetHeight >
PAGE_HEIGHT ? "always" : "avoid");

Velkost stranky je standard(A4 297mm x 210mm)
Prepocet, mozno existuje nieco inteligentnejsie
'                Inches                       mm                      pixels
'  A4   =  8.27 x 11.69" = 210.0 x 297.0 mm =  595 x  842 px
června 2, 2006 13:52
 

Tomas Zeman said:

Robert, ja dakujem za ten trik, mozno prerobime nase tlacove API vramci client side frameworku(nieco ako ajax, webservices a ziadne postbacky, uz to ma par rokov), pretoze pri pozuti js, ktory tam bol hlavne koli vypoctom a vkladaniu hlavicky a paticky v okamihu tlace na spravne miesto, pocitanie kde breaknut, bolo spracovanie mnohostrannych reportov neprijatelne pomale.
To co som tam nacrtol je iba o tom, ze ak sa tabulka nevojde na tlacovu stranku cela, zacne az na novej. (tiez som to neskusal a ani som nic podobne v praxi zatial nepotreboval, ale mozno bude chciet printnut niekto viac tabuliek naraz, potom to zmysel ma, to chcel pan riesit ;-)
června 12, 2006 22:30

What do you think?

(required) 
(optional)
(required) 
Enter the code you see below

Submit