Powtórz nagłówki tabeli w trybie drukowania


101

Czy w CSS można użyć właściwości wewnątrz @page, aby powiedzieć, że nagłówki tabeli (th) powinny być powtarzane na każdej stronie, jeśli tabela znajduje się na wielu stronach?

Odpowiedzi:


109

Do tego służy element THEAD . Oficjalne dokumenty tutaj .


1
Nie myślałem o tym, ale to nie działa w praktyce.
avernet

1
Z powodzeniem wykorzystałem to w przeglądarce Firefox.
jishi

5
Jak zwykle wymaga sprawnej przeglądarki - zobacz komentarz jishi.
Peter Rowell

9
Te komentarze są dość stare. Od 13.03.13 leniwe sprawdzanie miejscowe pokazuje, że działa w najnowszym IE10, a nawet czcigodnym IE8 ...
Nathan

8
Chrome wreszcie obsługuje powtarzające się nagłówki tabel dla mediów drukowanych. Jest to włączone, jeśli ma th break-inside:avoid, i można je wyłączyć za pomocą break:inside: auto. Zobacz codereview.chromium.org/2021703002/#ps20001
Alex Osborn

70

Niektóre przeglądarki powtarzają ten theadelement na każdej stronie, tak jak powinny. Inni potrzebują pomocy: Dodaj to do swojego CSS:

thead {display: table-header-group;}
tfoot {display: table-header-group;}

Opera 7.5 i IE 5 nie będą powtarzać nagłówków bez względu na to, co spróbujesz.

( źródło )


Nie działa też Flying Saucer, którego używam do generowania pliku PDF. Zadam również to pytanie na liście mailingowej Flying Saucer, aby sprawdzić, czy jest inny sposób, aby to zrobić.
avernet

7
Najnowsze wersje Chrome i Safari również obecnie tego nie robią. Zobacz moją odpowiedź na linki do ich trackerów problemów.
Nick Knowlson

1
Matko Boża, kiedy to było napisane, IE5 wciąż było czymś?
igorsantos 07

Właśnie wypróbowałem theadprzykład w moim CSS (kompatybilnym z IE7) i powtarza nagłówki, gdy robię podgląd wydruku. Dziękuję Ci. Ale widzę, aby uzyskać replikowany wiersz u góry następnej strony. Czemu?
Andrew Truckle,

45

Przed wdrożeniem tego rozwiązania ważne jest, aby wiedzieć, że Webkit obecnie tego nie robi.

Oto odpowiedni problem w narzędziu do śledzenia błędów Chrome: http://code.google.com/p/chromium/issues/detail?id=24826

Oraz w narzędziu do śledzenia problemów Webkit: https://bugs.webkit.org/show_bug.cgi?id=17205

Oznacz go gwiazdką w narzędziu do śledzenia problemów Chrome, jeśli chcesz pokazać, że jest to dla Ciebie ważne (tak zrobiłem).


1
Dzięki za to - spowodowałbym ogromny ból głowy, gdybym nie przewinął w dół.
Seiyria

4
I prawie 4 lata później (i 8 lat od złożenia sprawy z WebKitem), nadal tak jest!
jcaron


6

Przeglądarki Chrome i Opera nie obsługują, thead {display: table-header-group;}ale pozostałe obsługują prawidłowo.


jak to osiągnąć w chrome?
Null Pointer

4

jak wydrukować tabelę HTML. Nagłówek i stopka na każdej stronie

Działa również w przeglądarkach Webkit

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function PrintPage() {
            document.getElementById('print').style.display = 'none';
            window.resizeTo(960, 600);
            document.URL = "";
            window.location.href = "";
            window.print();
        }

    </script>
    <style type="text/css" media="print">
        @page
        {
            size: auto; /* auto is the initial value */
            margin: 2mm 4mm 0mm 0mm; /* this affects the margin in the printer settings */
        }
        thead
        {
            display: table-header-group;
        }
        tfoot
        {
            display: table-footer-group;
        }
    </style>
    <style type="text/css" media="screen">
        thead
        {
            display: block;
        }
        tfoot
        {
            display: block;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table style="width: 500px; margin: 0 auto;">
            <thead>
                <tr>
                    <td>
                        header comes here for each page
                    </td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>
                        1
                    </td>
                </tr>
                <tr>
                    <td>
                        2
                    </td>
                </tr>
                <tr>
                    <td>
                        3
                    </td>
                </tr>
                <tr>
                    <td>
                        4
                    </td>
                </tr>
                <tr>
                    <td>
                        5
                    </td>
                </tr>
                <tr>
                    <td>
                        6
                    </td>
                </tr>
                <tr>
                    <td>
                        7
                    </td>
                </tr>
                <tr>
                    <td>
                        8
                    </td>
                </tr>
                <tr>
                    <td>
                        9
                    </td>
                </tr>
                <tr>
                    <td>
                        10
                    </td>
                </tr>
                <tr>
                    <td>
                        11
                    </td>
                </tr>
                <tr>
                    <td>
                        12
                    </td>
                </tr>
                <tr>
                    <td>
                        13
                    </td>
                </tr>
                <tr>
                    <td>
                        14
                    </td>
                </tr>
                <tr>
                    <td>
                        15
                    </td>
                </tr>
                <tr>
                    <td>
                        16
                    </td>
                </tr>
                <tr>
                    <td>
                        17
                    </td>
                </tr>
                <tr>
                    <td>
                        18
                    </td>
                </tr>
                <tr>
                    <td>
                        19
                    </td>
                </tr>
                <tr>
                    <td>
                        20
                    </td>
                </tr>
                <tr>
                    <td>
                        21
                    </td>
                </tr>
                <tr>
                    <td>
                        22
                    </td>
                </tr>
                <tr>
                    <td>
                        23
                    </td>
                </tr>
                <tr>
                    <td>
                        24
                    </td>
                </tr>
                <tr>
                    <td>
                        25
                    </td>
                </tr>
                <tr>
                    <td>
                        26
                    </td>
                </tr>
                <tr>
                    <td>
                        27
                    </td>
                </tr>
                <tr>
                    <td>
                        28
                    </td>
                </tr>
                <tr>
                    <td>
                        29
                    </td>
                </tr>
                <tr>
                    <td>
                        30
                    </td>
                </tr>
                <tr>
                    <td>
                        31
                    </td>
                </tr>
                <tr>
                    <td>
                        32
                    </td>
                </tr>
                <tr>
                    <td>
                        33
                    </td>
                </tr>
                <tr>
                    <td>
                        34
                    </td>
                </tr>
                <tr>
                    <td>
                        35
                    </td>
                </tr>
                <tr>
                    <td>
                        36
                    </td>
                </tr>
                <tr>
                    <td>
                        37
                    </td>
                </tr>
                <tr>
                    <td>
                        38
                    </td>
                </tr>
                <tr>
                    <td>
                        39
                    </td>
                </tr>
                <tr>
                    <td>
                        40
                    </td>
                </tr>
                <tr>
                    <td>
                        41
                    </td>
                </tr>
                <tr>
                    <td>
                        42
                    </td>
                </tr>
                <tr>
                    <td>
                        43
                    </td>
                </tr>
                <tr>
                    <td>
                        44
                    </td>
                </tr>
                <tr>
                    <td>
                        45
                    </td>
                </tr>
                <tr>
                    <td>
                        46
                    </td>
                </tr>
                <tr>
                    <td>
                        47
                    </td>
                </tr>
                <tr>
                    <td>
                        48
                    </td>
                </tr>
                <tr>
                    <td>
                        49
                    </td>
                </tr>
                <tr>
                    <td>
                        50
                    </td>
                </tr>
                <tr>
                    <td>
                        51
                    </td>
                </tr>
                <tr>
                    <td>
                        52
                    </td>
                </tr>
                <tr>
                    <td>
                        53
                    </td>
                </tr>
                <tr>
                    <td>
                        54
                    </td>
                </tr>
                <tr>
                    <td>
                        55
                    </td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <td>
                        footer comes here for each page
                    </td>
                </tr>
            </tfoot>
        </table>
    </div>
    <br clear="all" />
    <input type="button" id="print" name="print" value="Print" onclick="javascript:PrintPage();"
        class="button" />
    </form>
</body>
</html>

Po prostu pracuj na komputerze Chrome. Chrome/Safari na iPhonie nie działa!
Devin Gong
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.