Làm cách nào để sử dụng HTML để in tiêu đề và chân trang trên mỗi trang in của tài liệu?


516

Có thể in các trang HTML với các tiêu đề và chân trang tùy chỉnh trên mỗi trang in không?

Tôi muốn thêm từ "UNCLASSifyED" bằng màu đỏ, Arial, kích thước 16pt vào đầu và cuối của mỗi trang in , bất kể nội dung.

Để làm rõ, nếu tài liệu được in trên 5 trang, mỗi trang nên có đầu trang và chân trang tùy chỉnh.

Có ai biết nếu điều này là có thể sử dụng HTML / CSS?



3
Đây là một câu hỏi mà tôi cố gắng trả lời trong một thời gian dài. Có vẻ như chìa khóa của vấn đề sẽ là các yếu tố css như trang, trung tâm hàng đầu, nội dung, vị trí: đang chạy (..). Nó trông như thế nào nếu các trình duyệt sẽ hỗ trợ đầy đủ @page: techrepublic.com/blog/webmaster/, alistapart.com/articles/boom alistapart.com/articles/building-books-with-css3 Một số vấn đề mở: code.google.com / p / chromium / vấn đề / chi tiết? id = 47277 bug.webkit.org/show_orms.cgi?id=15548
Daniel

Tôi đã đăng một giải pháp tương thích với Chrome ở đây sẽ thêm tiêu đề đang chạy vào các tài liệu không chứa văn bản mở rộng quá lớn. Vẫn không có giải pháp cho footer, mặc dù.
DoctorDeststallo

2
Giải pháp kết hợp : cả hai pisition: fixedthead tbody tfootkỹ thuật đều có nhược điểm vì vậy bạn nên kết hợp chúng, đọc thêm tại đây .
Mohammad Musavi

Câu trả lời:


353

Nếu bạn lấy phần tử mà bạn muốn làm chân trang và đặt nó ở vị trí: cố định và dưới cùng: 0, khi trang in, nó sẽ lặp lại phần tử đó ở dưới cùng của mỗi trang in. Điều tương tự sẽ làm việc cho một phần tử tiêu đề, chỉ cần đặt đầu: 0 thay thế.

Ví dụ:

<div class="divFooter">UNCLASSIFIED</div>

CSS:

@media screen {
  div.divFooter {
    display: none;
  }
}
@media print {
  div.divFooter {
    position: fixed;
    bottom: 0;
  }
}

62
Có vẻ như không hoạt động nếu bạn có một yếu tố kéo dài hai trang (trong trường hợp của tôi) - chân trang sẽ được ghi đè lên nó.
Stewol

77
Có vẻ như các trình duyệt webkit không hỗ trợ điều này đúng cách. Sửa tôi nếu tôi sai!
Gregg Lind

61
Điều này dường như không lặp lại trên mỗi trang.
Tyson của Tây Bắc

24
Điều này không hiệu quả với tôi, tôi đang sử dụng Chrome 15.0. Tất cả những gì nó làm là in phần tử sẽ xuất hiện trên màn hình, ví dụ ở giữa trang, nếu đó là nơi tôi cuộn đến. Nó chắc chắn không in trên mỗi trang.
chharvey

11
Tôi đã thử nghiệm nó trên Firefox và Chrome. Trên Firefox giải pháp này hoạt động, trên Chrome thì không.
Jaro

131

Tôi tin rằng câu trả lời đúng là HTML 5 và CSS3 không hỗ trợ in tiêu đề và chân trang trên printphương tiện truyền thông.

Và trong khi bạn có thể mô phỏng nó bằng:

  • những cái bàn
  • khối vị trí cố định

mỗi cái đều có lỗi khiến chúng không thể là giải pháp chung lý tưởng.


36
Đừng tin vào những câu trả lời khác. Họ có thể làm việc cho các trường hợp đặc biệt nhưng nói chung sẽ phá vỡ khủng khiếp. Không có giải pháp đáng tin cậy cho đến khi hộp lề @page được triển khai trong các trình duyệt chính. Xem: en.wikipedia.org/wiki/ Từ
user2847643

21
Thật không may, tôi phải nâng cấp cái này Mặc dù chúng tôi có năm 2018, tại sao hack không cung cấp cho chúng tôi @footercùng content:"stuff"hoặc giống nhau.
Kai Noack

1
Thực sự có một đặc điểm kỹ thuật trong quá trình sản xuất tại W3C để giải quyết các tình huống này.
Mendy

Tôi nghĩ rằng đây là câu trả lời tốt nhất. Vấn đề là các nhà cung cấp trình duyệt. Bạn có thể tạo các tệp PDF đẹp mắt bên ngoài trình duyệt bằng CSS Paged Media bằng các công cụ thương mại như thế này (và có các công cụ khác): Anten House antennahouse.com/formatter , Prince princexml.com .
markg

Tôi đang đưa ra nhận xét này như một bình luận, không phải là một câu trả lời, vì vậy xin đừng đánh tôi với "OP không hỏi ...". Một khả năng là sử dụng trình tạo PDF cho phép bạn đặt các tiêu đề và chân trang cố định và hiển thị chế độ xem của bạn thành định dạng này khi người dùng quyết định họ muốn có "bản xem trước in" thực sự hoặc tài liệu in. HTML là để hiển thị màn hình và màn hình không có khái niệm về các trang. PDF cũng có thể đại diện cho định dạng tài liệu in (tôi biết, nó không) và là một phương thức mà các tiêu đề và chân trang của trang có liên quan. NReco.PdfGenerator rất hợp lý cho mục đích kinh doanh hoặc dùng thử miễn phí.
Newclique

71

Tôi chỉ dành nửa ngày tốt hơn để tìm ra giải pháp thực sự hiệu quả cho tôi và nghĩ rằng tôi sẽ chia sẻ những gì tôi đã làm. Vấn đề với các giải pháp ở trên mà tôi gặp phải là tất cả các yếu tố đoạn văn của tôi sẽ trùng lặp với phần chân trang tôi muốn ở cuối trang. Để giải quyết vấn đề này, tôi đã sử dụng CSS sau:

footer {
  font-size: 9px;
  color: #f00;
  text-align: center;
}

@page {
  size: A4;
  margin: 11mm 17mm 17mm 17mm;
}

@media print {
  footer {
    position: fixed;
    bottom: 0;
  }

  .content-block, p {
    page-break-inside: avoid;
  }

  html, body {
    width: 210mm;
    height: 297mm;
  }
}

Các page-break-insidecho pcontent-blocklà rất quan trọng đối với tôi. Bất cứ khi nào tôi có một người ptheo sau h*, tôi bọc cả hai trong một div class = "content-block">để đảm bảo họ ở cùng nhau và không phá vỡ.

Tôi hy vọng rằng ai đó thấy điều này hữu ích vì tôi mất khoảng 3 giờ để tìm hiểu (tôi cũng mới biết về CSS / HTML, vì vậy có ...)

BIÊN TẬP

Theo một yêu cầu trong các bình luận, tôi đang thêm một tài liệu HTML mẫu. Bạn sẽ muốn sao chép nó vào một tệp HTML, mở nó và sau đó chọn in trang. Bản xem trước in sẽ hiển thị hoạt động này. Nó hoạt động trong Firefox và IE, nhưng Chrome đã tạo phông chữ đủ nhỏ để vừa trên một trang, vì vậy nó không hoạt động ở đó.

footer {
  font-size: 9px;
  color: #f00;
  text-align: center;
}

@page {
  size: A4;
  margin: 11mm 17mm 17mm 17mm;
}

@media print {
  footer {
    position: fixed;
    bottom: 0;
  }

  .content-block, p {
    page-break-inside: avoid;
  }

  html, body {
    width: 210mm;
    height: 297mm;
  }
}
<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <h1>
      Example Document
    </h1>
    <div>
      <p>
        This is an example document that shows how to have a footer that repeats at the bottom of every page, but also isn't covered up by paragraph text.
      </p>
    </div>
    <div>
      <h3>
        Example Section I
      </h3>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vestibulum metus sit amet urna lobortis sollicitudin. Nulla mattis purus porta lorem tempor, a cursus tellus facilisis. Aliquam pretium nibh vitae elit placerat vestibulum. Duis felis ipsum, consectetur id pellentesque in, porta sit amet sapien. Ut tristique enim sem, laoreet bibendum nisl fermentum vitae. Ut aliquet sem ac lorem malesuada sodales. Fusce iaculis ipsum ex, in mollis dolor dapibus sit amet. In convallis felis in orci fermentum gravida a vel orci. Sed tincidunt porta nibh sit amet varius. Donec et odio eget odio tempus auctor ac eget ex.
        
        Pellentesque vitae augue sed purus dictum ultricies at eu neque. Nullam ut mauris a purus tristique euismod. Sed elementum, leo id placerat congue, leo tellus pharetra orci, eget ultricies odio quam sit amet ipsum. Praesent feugiat, lorem at commodo egestas, felis ligula pharetra sapien, in placerat mauris nisi aliquet tortor. Quisque nibh lectus, laoreet vel mollis a, tincidunt vel ipsum. Sed blandit vehicula sollicitudin. Donec et sapien justo. Ut fermentum ipsum imperdiet diam condimentum, eget varius sapien dictum. Sed sed elit egestas libero maximus finibus eu eget massa.
        
        Duis finibus vestibulum finibus. Nunc lobortis lacus ut libero mattis tempor. Nulla a nunc at nisl elementum congue. Nunc eu consectetur mauris. Etiam non placerat massa. Etiam eu urna in metus tempus molestie sed eget diam. Nunc sem velit, elementum sit amet fringilla in, dictum sit amet sem. Quisque convallis faucibus purus dignissim dictum. Sed semper, mi vel accumsan sollicitudin, massa massa pellentesque justo, eget auctor sapien enim ac elit.
        
        Nullam turpis augue, lacinia ut libero ac, rhoncus bibendum ligula. Mauris ullamcorper maximus turpis, a consequat turpis bibendum sit amet. Nam vitae dui nec velit hendrerit faucibus. Vivamus nunc diam, porta tristique augue nec, dignissim venenatis felis. Proin mattis id risus in feugiat. Etiam cursus faucibus nisi. In in nisi ullamcorper, convallis lectus et, ornare nulla. Cras tristique nulla eros, non maximus odio imperdiet eu. Nullam egestas dignissim est, et fringilla odio pretium eleifend. Nullam tincidunt sapien fermentum, rhoncus risus ac, ullamcorper libero. Vestibulum bibendum molestie dui nec tincidunt. Mauris tempus, orci ut congue vulputate, erat orci aliquam orci, sed eleifend orci dui sed tellus. Pellentesque pellentesque massa vulputate urna pretium, consectetur pulvinar orci pulvinar.
        
        Donec aliquet imperdiet ex, et tincidunt risus convallis eget. Etiam eu fermentum lectus, molestie eleifend nisi. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam dignissim, erat vitae congue molestie, ante urna sagittis est, et sagittis lacus risus vitae est. Sed elementum ipsum et pellentesque dignissim. Sed vehicula feugiat pretium. Donec ex lacus, dictum faucibus lectus sit amet, tempus hendrerit ante. Ut sollicitudin sodales metus, at placerat risus viverra ut.
        
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vestibulum metus sit amet urna lobortis sollicitudin. Nulla mattis purus porta lorem tempor, a cursus tellus facilisis. Aliquam pretium nibh vitae elit placerat vestibulum. Duis felis ipsum, consectetur id pellentesque in, porta sit amet sapien. Ut tristique enim sem, laoreet bibendum nisl fermentum vitae. Ut aliquet sem ac lorem malesuada sodales. Fusce iaculis ipsum ex, in mollis dolor dapibus sit amet. In convallis felis in orci fermentum gravida a vel orci. Sed tincidunt porta nibh sit amet varius. Donec et odio eget odio tempus auctor ac eget ex.
        
        Duis finibus vestibulum finibus. Nunc lobortis lacus ut libero mattis tempor. Nulla a nunc at nisl elementum congue. Nunc eu consectetur mauris. Etiam non placerat massa. Etiam eu urna in metus tempus molestie sed eget diam. Nunc sem velit, elementum sit amet fringilla in, dictum sit amet sem. Quisque convallis faucibus purus dignissim dictum. Sed semper, mi vel accumsan sollicitudin, massa massa pellentesque justo, eget auctor sapien enim ac elit.
        
        Nullam turpis augue, lacinia ut libero ac, rhoncus bibendum ligula. Mauris ullamcorper maximus turpis, a consequat turpis bibendum sit amet. Nam vitae dui nec velit hendrerit faucibus. Vivamus nunc diam, porta tristique augue nec, dignissim venenatis felis. Proin mattis id risus in feugiat. Etiam cursus faucibus nisi. In in nisi ullamcorper, convallis lectus et, ornare nulla. Cras tristique nulla eros, non maximus odio imperdiet eu. Nullam egestas dignissim est, et fringilla odio pretium eleifend. Nullam tincidunt sapien fermentum, rhoncus risus ac, ullamcorper libero.
      </p>
    </div>
    <div class="content-block">
      <h3>Example Section II</h3>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vestibulum metus sit amet urna lobortis sollicitudin. Nulla mattis purus porta lorem tempor, a cursus tellus facilisis. Aliquam pretium nibh vitae elit placerat vestibulum. Duis felis ipsum, consectetur id pellentesque in, porta sit amet sapien. Ut tristique enim sem, laoreet bibendum nisl fermentum vitae. Ut aliquet sem ac lorem malesuada sodales. Fusce iaculis ipsum ex, in mollis dolor dapibus sit amet. In convallis felis in orci fermentum gravida a vel orci. Sed tincidunt porta nibh sit amet varius. Donec et odio eget odio tempus auctor ac eget ex.
        
        Pellentesque vitae augue sed purus dictum ultricies at eu neque. Nullam ut mauris a purus tristique euismod. Sed elementum, leo id placerat congue, leo tellus pharetra orci, eget ultricies odio quam sit amet ipsum. Praesent feugiat, lorem at commodo egestas, felis ligula pharetra sapien, in placerat mauris nisi aliquet tortor. Quisque nibh lectus, laoreet vel mollis a, tincidunt vel ipsum. Sed blandit vehicula sollicitudin. Donec et sapien justo. Ut fermentum ipsum imperdiet diam condimentum, eget varius sapien dictum. Sed sed elit egestas libero maximus finibus eu eget massa.
      </p>
    </div>
    <footer>
      This is the text that goes at the bottom of every page.
    </footer>
  </body>
</html>


1
Cảm ơn vì điều này, tôi chỉ muốn có một tài liệu HTML mẫu trong câu trả lời để làm cho nó dễ dàng hơn.
Eric Kigathi

2
@EricKigathi Lưu ý. Tôi sẽ cố gắng hết sức để đến đó vào cuối tuần này và chỉnh sửa câu trả lời của tôi.
brittenb

2
@EricKigathi Bỏ lỡ thời hạn cuối tuần của tôi, nhưng tôi đã thêm mã HTML mẫu. Mong rằng sẽ giúp!
brittenb

Cảm ơn @brittenb - rất cảm kích, bạn được tha thứ vì đã bỏ lỡ thời hạn; )
Eric Kigathi

3
không hoạt động cho trang thứ hai cho tiêu đề. vẫn chồng chéo
Fei Xue - MSFT

17

Tôi đã tìm kiếm nhiều năm cho một giải pháp và tìm thấy bài đăng này về cách in chân trang hoạt động trên nhiều trang mà không chồng chéo nội dung trang.

Yêu cầu của tôi là IE8, cho đến nay tôi đã thấy rằng điều này không hoạt động trong Chrome. [ cập nhật ] Kể từ ngày 1 tháng 3 năm 2018, nó cũng hoạt động trong Chrome

Ví dụ này sử dụng các bảng và phần tử chân bằng cách đặt kiểu css:

tfoot {display: table-footer-group;}

2
cái này hoạt động trong tất cả các trình duyệt và trong asp (có vấn đề điên rồ với chân trang) Sử dụng cái này tôi nói.
DWolf

17
@DWolf Nhận xét đầu tiên cho tôi một hy vọng rất lớn. Và bạn tiêu diệt tôi trong một câu ngay sau đó.
C0ZEN

Tôi thực sự đã có công việc này trong Chrome. Tôi đã không làm cho nó hoạt động trong một phiên bản Chromium dựa trên linux rất cũ nhưng Chrome hoạt động rất tuyệt.
njfife

Kể từ năm 2019, nó hoạt động trong Chrome!
Oleg

13

giải pháp kỳ diệu là thực sự đặt mọi thứ trong một bảng duy nhất.

  • thead : đây là cho tiêu đề lặp đi lặp lại.

  • t feet : footer lặp đi lặp lại.

  • tbody : nội dung.

và tạo một tr, td và đặt mọi thứ vào một div

::

<table class="report-container">
   <thead class="report-header">
     <tr>
        <th class="report-header-cell">
           <div class="header-info">
            ...
           </div>
         </th>
      </tr>
    </thead>
    <tfoot class="report-footer">
      <tr>
         <td class="report-footer-cell">
           <div class="footer-info">
           ...
           </div>
          </td>
      </tr>
    </tfoot>
    <tbody class="report-content">
      <tr>
         <td class="report-content-cell">
            <div class="main">
            ...
            </div>
          </td>
       </tr>
     </tbody>
</table>

table.report-container {
    page-break-after:always;
}
thead.report-header {
    display:table-header-group;
}
tfoot.report-footer {
    display:table-footer-group;
} 

thêm : để tránh chồng chéo với nhiều trang. giống:

<div class="main">
    <div class="article">
        ...
  </div>
    <div class="article">
        ...
  </div>
    <div class="article">
        ...
  </div>
  ...
  ...
  ...
</div>

dẫn đến tràn sẽ khiến mọi thứ trùng lặp với tiêu đề trong trang bị vỡ ..

vì vậy >> sử dụng: page-break-inside: avoid !important;với lớp này article.

table.report-container div.article {
    page-break-inside: avoid;
}

Khá đơn giản, hy vọng điều này sẽ mang lại cho bạn kết quả tốt nhất mà bạn mong muốn.

trân trọng. ;)

nguồn ..


Giải pháp tốt nhất tại đây. Một vài lưu ý: Flexbox có thể gây ra một số hành vi không mong muốn. Nếu bạn muốn chân trang trên trang lsat là trang dưới cùng, bạn sẽ cần giải pháp và giải pháp đó từ @Infotekka kết hợp.
Arseniy-II

11

Từ câu hỏi này - thêm các kiểu sau vào biểu định kiểu chỉ in. Giải pháp này sẽ hoạt động trong IE và Firefox, nhưng không phải trong Chrome (kể từ phiên bản 21):

#header {
  display: table-header-group;
}

#main {
  display: table-row-group;
}

#footer {
  display: table-footer-group;
}

1
Tôi đã tìm thấy giải pháp này chỉ làm việc một. Chưa thử nghiệm tất cả các trình duyệt nhưng nó hoạt động trong Firefox!
Primoz Rome

2
2017 và vẫn không hoạt động trong Chrome! nhưng hoạt động trong Firefox
Mehdi Dehghani

@MehdiDehghani: xấu của tôi .. gỡ bình luận
Fr0zenFyr

10

Sử dụng ngắt trang để xác định kiểu trong CSS:

@media all
  {
  #page-one, .footer, .page-break { display:none; }
  }

@media print
  {
  #page-one, .footer, .page-break   
    { 
    display: block;
    color:red; 
    font-family:Arial; 
    font-size: 16px; 
    text-transform: uppercase; 
    }
  .page-break
    {
    page-break-before:always;
    } 
}

Sau đó thêm đánh dấu trong tài liệu ở những nơi thích hợp:

<h2 id="page-one">unclassified</h2>
<!-- content block -->
<h2 class="footer">unclassified</h2>
<h2 class="page-break">unclassified</h2>
<!-- content block -->
<h2 class="footer">unclassified</h2>
<h2 class="page-break">unclassified</h2>
<!-- content block -->
<h2 class="footer">unclassified</h2>
<h2 class="page-break">unclassified</h2>
<!-- content block -->
<h2 class="footer">unclassified</h2>
<h2 class="page-break">unclassified</h2>

Người giới thiệu


32
Điều này không in một tiêu đề và chân trang trên mỗi trang. Nó chỉ định nhiều "trang" với dự đoán tốt nhất. Nếu bạn không biết chiều cao tài liệu của mình (số trang), điều đó là vô ích.
rainabba

@rainabbaif the document was printed onto 5 pages
Paul Sweatte

4
Đó chỉ là một ví dụ. không nên được sử dụng để hướng dẫn chính xác ans của bạn .. cách giải quyết.
igorsantos07

@ igorsantos07 shouldkhông có nghĩa don't. If(chỉ là một ví dụ) từ if(chỉ là một ví dụ) được OP sử dụng và if(chỉ là một ví dụ) OP không còn hoạt động, tốt hơn là cung cấp một câu trả lời cụ thể if(chỉ là một ví dụ) đã có câu trả lời chung chung và if(chỉ là một ví dụ) các ngôn ngữ (HTML / CSS) và thông số kỹ thuật trong câu hỏi được thiết kế để tránh bị gián đoạn và đơn giản hóa tài liệu ? If(chỉ là một ví dụ) vậy, tại sao? Nếu không, tại sao không?
Paul Sweatte

5

Tôi đã cố gắng chiến đấu với trận chiến vô ích này kết hợp các quy tắc t feet & css nhưng nó chỉ hoạt động trên Firefox :(. Khi sử dụng css đơn giản, nội dung sẽ chảy qua phần chân trang. Khi sử dụng t feet, phần chân trang ở trang cuối không nằm ở phía dưới Điều này là do chân trang dành cho bảng, không phải trang vật lý. Đã thử nghiệm trên Chrome 16, Opera 11, Firefox 3 & 6 và IE6.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Header & Footer test</title>

<style>

  @media screen {
    div#footer_wrapper {
      display: none;
    }
  }

  @media print {
    tfoot { visibility: hidden; }

    div#footer_wrapper {
      margin: 0px 2px 0px 7px;
      position: fixed;
      bottom: 0;
    }

    div#footer_content {
      font-weight: bold;
    }
  }

</style>
</head>

<body>

<div id="footer_wrapper">
  <div id="footer_content">
    Total 4923
  </div>
</div>


<TABLE CELLPADDING=6>

<THEAD>
<TR> <TH>Weekday</TH> <TH>Date</TH> <TH>Manager</TH> <TH>Qty</TH> </TR>
</THEAD>

<TBODY>
<TR> <TD>Mon</TD> <TD>09/11</TD> <TD>Kelsey</TD>  <TD>639</TD>  </TR>
<TR> <TD>Tue</TD> <TD>09/12</TD> <TD>Lindsey</TD> <TD>596</TD>  </TR>
<TR> <TD>Wed</TD> <TD>09/13</TD> <TD>Randy</TD>   <TD>1135</TD> </TR>
<TR> <TD>Thu</TD> <TD>09/14</TD> <TD>Susan</TD>   <TD>1002</TD> </TR>
<TR> <TD>Fri</TD> <TD>09/15</TD> <TD>Randy</TD>   <TD>908</TD>  </TR>
<TR> <TD>Sat</TD> <TD>09/16</TD> <TD>Lindsey</TD> <TD>371</TD>  </TR>
<TR> <TD>Sun</TD> <TD>09/17</TD> <TD>Susan</TD>   <TD>272</TD>  </TR>
<TR> <TD>Mon</TD> <TD>09/11</TD> <TD>Kelsey</TD>  <TD>639</TD>  </TR>
<TR> <TD>Tue</TD> <TD>09/12</TD> <TD>Lindsey</TD> <TD>596</TD>  </TR>
<TR> <TD>Wed</TD> <TD>09/13</TD> <TD>Randy</TD>   <TD>1135</TD> </TR>
<TR> <TD>Thu</TD> <TD>09/14</TD> <TD>Susan</TD>   <TD>1002</TD> </TR>
<TR> <TD>Fri</TD> <TD>09/15</TD> <TD>Randy</TD>   <TD>908</TD>  </TR>
<TR> <TD>Sat</TD> <TD>09/16</TD> <TD>Lindsey</TD> <TD>371</TD>  </TR>
<TR> <TD>Sun</TD> <TD>09/17</TD> <TD>Susan</TD>   <TD>272</TD>  </TR>
<TR> <TD>Mon</TD> <TD>09/11</TD> <TD>Kelsey</TD>  <TD>639</TD>  </TR>
<TR> <TD>Tue</TD> <TD>09/12</TD> <TD>Lindsey</TD> <TD>596</TD>  </TR>
<TR> <TD>Wed</TD> <TD>09/13</TD> <TD>Randy</TD>   <TD>1135</TD> </TR>
<TR> <TD>Thu</TD> <TD>09/14</TD> <TD>Susan</TD>   <TD>1002</TD> </TR>
<TR> <TD>Fri</TD> <TD>09/15</TD> <TD>Randy</TD>   <TD>908</TD>  </TR>
<TR> <TD>Sat</TD> <TD>09/16</TD> <TD>Lindsey</TD> <TD>371</TD>  </TR>
<TR> <TD>Sun</TD> <TD>09/17</TD> <TD>Susan</TD>   <TD>272</TD>  </TR>
<TR> <TD>Mon</TD> <TD>09/11</TD> <TD>Kelsey</TD>  <TD>639</TD>  </TR>
<TR> <TD>Tue</TD> <TD>09/12</TD> <TD>Lindsey</TD> <TD>596</TD>  </TR>
<TR> <TD>Wed</TD> <TD>09/13</TD> <TD>Randy</TD>   <TD>1135</TD> </TR>
<TR> <TD>Thu</TD> <TD>09/14</TD> <TD>Susan</TD>   <TD>1002</TD> </TR>
<TR> <TD>Fri</TD> <TD>09/15</TD> <TD>Randy</TD>   <TD>908</TD>  </TR>
<TR> <TD>Sat</TD> <TD>09/16</TD> <TD>Lindsey</TD> <TD>371</TD>  </TR>
<TR> <TD>Sun</TD> <TD>09/17</TD> <TD>Susan</TD>   <TD>272</TD>  </TR>
<TR> <TD>Mon</TD> <TD>09/11</TD> <TD>Kelsey</TD>  <TD>639</TD>  </TR>
<TR> <TD>Tue</TD> <TD>09/12</TD> <TD>Lindsey</TD> <TD>596</TD>  </TR>
<TR> <TD>Wed</TD> <TD>09/13</TD> <TD>Randy</TD>   <TD>1135</TD> </TR>
<TR> <TD>Thu</TD> <TD>09/14</TD> <TD>Susan</TD>   <TD>1002</TD> </TR>
<TR> <TD>Fri</TD> <TD>09/15</TD> <TD>Randy</TD>   <TD>908</TD>  </TR>
<TR> <TD>Sat</TD> <TD>09/16</TD> <TD>Lindsey</TD> <TD>371</TD>  </TR>
<TR> <TD>Sun</TD> <TD>09/17</TD> <TD>Susan</TD>   <TD>272</TD>  </TR>
<TR> <TD>Mon</TD> <TD>09/11</TD> <TD>Kelsey</TD>  <TD>639</TD>  </TR>
<TR> <TD>Tue</TD> <TD>09/12</TD> <TD>Lindsey</TD> <TD>596</TD>  </TR>
<TR> <TD>Wed</TD> <TD>09/13</TD> <TD>Randy</TD>   <TD>1135</TD> </TR>
<TR> <TD>Thu</TD> <TD>09/14</TD> <TD>Susan</TD>   <TD>1002</TD> </TR>
<TR> <TD>Fri</TD> <TD>09/15</TD> <TD>Randy</TD>   <TD>908</TD>  </TR>
<TR> <TD>Sat</TD> <TD>09/16</TD> <TD>Lindsey</TD> <TD>371</TD>  </TR>
<TR> <TD>Sun</TD> <TD>09/17</TD> <TD>Susan</TD>   <TD>272</TD>  </TR>
<TR> <TD>Mon</TD> <TD>09/11</TD> <TD>Kelsey</TD>  <TD>639</TD>  </TR>
<TR> <TD>Tue</TD> <TD>09/12</TD> <TD>Lindsey</TD> <TD>596</TD>  </TR>
<TR> <TD>Wed</TD> <TD>09/13</TD> <TD>Randy</TD>   <TD>1135</TD> </TR>
<TR> <TD>Thu</TD> <TD>09/14</TD> <TD>Susan</TD>   <TD>1002</TD> </TR>
<TR> <TD>Fri</TD> <TD>09/15</TD> <TD>Randy</TD>   <TD>908</TD>  </TR>
<TR> <TD>Sat</TD> <TD>09/16</TD> <TD>Lindsey</TD> <TD>371</TD>  </TR>
<TR> <TD>Sun</TD> <TD>09/17</TD> <TD>Susan</TD>   <TD>272</TD>  </TR>
</TBODY>

<TFOOT id="table_footer">
<TR> <TH ALIGN=LEFT COLSPAN=3>Total</TH> <TH>4923</TH> </TR>
</TFOOT>

</TABLE>

</body>
</html>

4

Một cách tiếp cận chỉ hoạt động để thêm tiêu đề vào mỗi trang là bọc nội dung của bạn trong <table>và sau đó đặt nội dung tiêu đề của bạn vào <thead>thẻ và nội dung của bạn trong <tbody>thẻ, như vậy:

<table>
  <thead>
    <tr>
      <th>This content appears on every page</th>
    </tr>
   </thead>
   <tbody>
     <tr>
       <td>Put all your content here, it can span multiple pages and your header will show up at the top of each page</td>
     </tr>
   </tbody>
 </table>

Điều này hoạt động trong Chrome, không chắc chắn 100% về các trình duyệt khác.


1
cái này hoạt động miễn là thead và t feet của chúng ta không có nhiều <tr> hàng, có vẻ như thead và t feet có một chiều cao tối đa, trong trường hợp của tôi, tôi có 9 <tr> hàng trong thead, khi tôi giảm nó xuống còn 3 hoặc 5 nó hoạt động
Sundara Mitchu

Đó là một mánh khóe gọn gàng! Thead hoạt động như một bùa mê, nhưng t feet thì không. Bất kỳ ý tưởng về làm thế nào để làm cho nó hoạt động?
Irikos

Tfoot hoạt động trong trình duyệt, nhưng không có trong MS word. Thead hoạt động trong cả hai.
Irikos

3

Nếu bạn có thể sử dụng javascipt, hãy yêu cầu khách hàng xử lý nội dung bằng cách sử dụng javascript để đặt các thành phần dựa trên không gian có sẵn.

Bạn có thể sử dụng plugin trình tạo jquery để tự động bố trí nội dung của mình trong các khối có kích thước cố định và định vị các tiêu đề và chân trang của bạn như một phần của thói quen kết xuất. http://welcome.totheinter.net/columnizer-jquery-plugin/

Xem ví dụ 10 http://welcome.totheinter.net/autocolumn/sample10.html

Trình duyệt vẫn sẽ thêm các tiêu đề hoặc chân trang riêng nếu được bật trong hệ điều hành. Bố cục nhất quán trên các nền tảng và trình duyệt có thể sẽ yêu cầu css có điều kiện.


3
Bản demo được cung cấp thậm chí không hoạt động (các trang không bị vỡ, chảy vào nhau, v.v.), chứ đừng nói đến nội dung phổ quát hơn.
rainabba

1
Tôi nên đã làm rõ. Các liên kết được cung cấp là ví dụ về thư viện javascript để bố trí nội dung trên các thùng chứa và không được thiết lập để in. Liên kết này có nghĩa là một ví dụ về việc sử dụng js để bố trí nội dung trong các ranh giới được chỉ định. Tôi đã sử dụng js như một công cụ kết xuất với wkhtmltopdf để tạo sách nấu ăn từ nội dung cơ sở dữ liệu.
Sparkalow

Câu hỏi là về in ấn.
Greg Blass

2

Tôi ngạc nhiên và không ấn tượng rằng Chrome có hỗ trợ in CSS khủng khiếp như vậy.

Nhiệm vụ của tôi yêu cầu hiển thị một chân trang hơi khác nhau trên mỗi trang. Trong trường hợp đơn giản nhất, chỉ cần một chương và số trang tăng dần. Trong các trường hợp phức tạp hơn, nhiều văn bản hơn ở chân trang - ví dụ: một số chú thích - có thể mở rộng kích thước của nó, khiến phần trên khu vực nội dung của trang đó bị thu hẹp và một phần của nó sẽ bị phản xạ sang trang tiếp theo.

In CSS không thể giải quyết điều này, ít nhất là không hỗ trợ trình duyệt kém chất lượng ngày nay. Nhưng bước ra ngoài in ấn, CSS3 có thể thực hiện rất nhiều công việc nặng nhọc:

https://jsfiddle.net/b9chris/moctxd2a/29/

<div class=page>
  <header></header>
  <div class=content>Content</div>
  <footer></footer>
</div>

SCSS:

body {
  @media screen {
    width: 7.5in;
    margin: 0 auto;
  }
}

div.page {
  display: flex;
  height: 10in;    
  flex-flow: column nowrap;
  justify-content: space-between;
  align-content: stretch;
}

div.content {
  flex-grow: 1;
}

@media print {
  @page {
    size: letter;  // US 8.5in x 11in
    margin: .5in;
  }

  footer {
    page-break-after: always;
  }
}

Có một ít mã hơn trong ví dụ, bao gồm một số Cat Ipsum; nhưng js đang sử dụng chỉ ở đó để chứng minh mức độ tiêu đề / chân trang có thể thay đổi mà không phá vỡ phân trang. Chìa khóa thực sự là sử dụng thủ thuật dán đáy cột từ CSS Flexbox và sau đó áp dụng nó cho một trang có chiều cao cố định đã biết - trong trường hợp này là một mảnh giấy có kích thước 8,5 "x11" của Hoa Kỳ, với 0,55 "lề rời width: 7.5inheight: 10inchính xác. Một khi bộ chứa CSS flex được cho biết kích thước chính xác của nó ( div.page), thật dễ dàng để tiêu đề và chân trang mở rộng và hợp đồng theo cách chúng làm trong kiểu chữ thông thường.

Những gì còn lại đang chảy nội dung của trang khi phần chân trang, chẳng hạn, tăng lên 8 chú thích không 3. Trong trường hợp của tôi, nội dung đã được cố định đủ để tôi không cần phải lo lắng về nó, nhưng tôi chắc chắn có một cách để làm điều đó. Một cách tiếp cận gây chú ý, là biến tiêu đề và chân trang thành hình nổi 100% chiều rộng, sau đó định vị chúng bằng Javascript. Trình duyệt sẽ tự động xử lý các gián đoạn đối với luồng nội dung thông thường.


0

Đây có phải là thứ bạn muốn chỉ in? Bạn có thể thêm nó vào mọi trang trên trang web của mình và sử dụng CSS để xác định thẻ dưới dạng phương tiện chỉ in.

Ví dụ, đây có thể là một tiêu đề ví dụ:

<span class="printspan">UNCLASSIFIED</span>

Và trong CSS của bạn, hãy làm một cái gì đó như thế này:

<style type="text/css" media="screen">
    .printspan
    {
        display: none;
    }
</style>
<style type="text/css" media="print">
    .printspan
    {
        display: inline;
        font-family: Arial, sans-serif;
        font-size: 16 pt;
        color: red;
    }
</style>

Cuối cùng, để bao gồm đầu trang / chân trang trên mỗi trang bạn có thể sử dụng bao gồm phía máy chủ hoặc nếu bạn có bất kỳ trang nào được tạo bằng PHP hoặc ASP, bạn có thể chỉ cần mã hóa nó vào một tệp chung.

Biên tập:

Câu trả lời này nhằm cung cấp một cách để hiển thị một cái gì đó trên phiên bản in vật lý của tài liệu trong khi không hiển thị nó theo cách khác. Tuy nhiên, giống như các bình luận đề xuất, nó không giải quyết được vấn đề có chân trang trên nhiều trang in khi nội dung tràn ra.

Tôi sẽ để nó ở đây trong trường hợp nó vẫn hữu ích.


4
+1 để sử dụng hiển thị thay vì hiển thị - khả năng hiển thị: ẩn không gian dành riêng, trong khi hiển thị: không có gì làm sập khoảng trắng, tiết kiệm giấy và khiến hành tinh Trái đất tồn tại lâu hơn.
Fenton

3
-1: mặc dù là một ví dụ hay về biểu định kiểu in, nhưng nó không giải quyết được vấn đề khi nội dung tràn ra một trang .. Như vậy, điều này sẽ chỉ hiển thị chân trang trên trang cuối cùng.
NotMe

0

Nếu bạn đang sử dụng một công cụ mẫu như Asp.net Razor Engine hoặc Angular, tôi nghĩ bạn phải tạo lại trang của mình và chia trang thành nhiều trang và sau đó bạn có thể tự do đánh dấu từng trang và đặt tiêu đề và chân trang vào chủ đề. một ví dụ có thể như dưới đây:

@page {
  size: A4;  
   margin: .9cm;
}


@media print {

   body.print-paper-a4 {
    width: 210mm;
    height: 297mm;
  }

   body {
       background: white;
       margin: 0;
       padding: 0;
   }

   .print-stage,
   .no-print {
       display: none;
   }


   body.print-paper.a4 .print-paper {
      width: 210mm;
        height: 297mm;
    }

   .print-paper {
       page-break-after: always;
       margin: 0;
       padding: .8cm;
       border:none;
       overflow: hidden;
   }

}





.print-papers {
    display: block;
    z-index: 2000;
    margin: auto;

}


body.print-paper-a4 .print-paper {
    width: 21cm;
    height:27cm;
}


.print-paper {
    margin: auto;
    background: white;
    border: 1px dotted black;
    box-sizing: border-box;
    margin: 1cm auto;
    padding: .8cm;
       overflow: hidden;   
}


body.print-mode .no-print-preview {
    display: none;
}

body.print-mode .print-preview {
    display: block;
}
<body class="print-mode print-paper-a4">
        
        <div class="print-papers print-preview">
            <div class="print-paper">
                <div style="font-size: 5cm">
                    HELLO
                </div>

            </div>
            <div class="print-paper">
              <div class="page-header">
                </div>
              
              
            </div>
            <div class="print-paper">
                
                

            </div>            
        </div>
  </body>


0

Tôi tìm thấy một giải pháp. Ý tưởng cơ bản là tạo một bảng và trong phần đầu, đặt dữ liệu của tiêu đề theo tr và bằng lực css để hiển thị rằng tr chỉ in trong màn hình thì tiêu đề bình thường của bạn sẽ buộc chỉ hiển thị trong màn hình không in. 100% làm việc trên nhiều trang in. mã mẫu ở đây

<style> 
    @media screen {
        .only_print{
            display:none;
        }
    }
    @media print {
        .no-print {
            display: none !important;
        }
    }
    TABLE{border-collapse: collapse;}
    TH, TD {border:1px solid grey;}
</style>
<div class="no-print">  <!-- This is header for screen and will not be printed -->
    <div>COMPANY NAME FOR SCREEN</div>
    <div>DESCRIPTION FOR SCREEN</div>
</div>

<table>
    <thead>
        <tr class="only_print"> <!-- This is header for print and will not be shown on screen -->
            <td colspan="100" style="border: 0px;">
                <div>COMPANY NAME FOR PRINT</div>
                <div>DESCRIPTION FOR PRINT</div>
            </td>
        </tr>
        <!-- From here Actual Data of table start -->
        <tr>
            <th>Column 1</th>
            <th>Column 2</th>
            <th>Column 3</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1-1</td>
            <td>1-2</td>
            <td>1-3</td>
        </tr>
        <tr>
            <td>2-1</td>
            <td>2-2</td>
            <td>2-3</td>
        </tr>
    </tbody>
</table>

0

Hãy thử điều này, với tôi nó hoạt động trên Chrome, Firefox và Safari. Bạn sẽ cố định tiêu đề và chân trang cho mỗi trang mà không chồng chéo nội dung trang

CSS

<style>
  @page {
    margin: 10mm;
  }

  body {
    font: 9pt sans-serif;
    line-height: 1.3;

    /* Avoid fixed header and footer to overlap page content */
    margin-top: 100px;
    margin-bottom: 50px;
  }

  #header {
    position: fixed;
    top: 0;
    width: 100%;
    height: 100px;
    /* For testing */
    background: yellow; 
    opacity: 0.5;
  }

  #footer {
    position: fixed;
    bottom: 0;
    width: 100%;
    height: 50px;
    font-size: 6pt;
    color: #777;
    /* For testing */
    background: red; 
    opacity: 0.5;
  }

  /* Print progressive page numbers */
  .page-number:before {
    /* counter-increment: page; */
    content: "Pagina " counter(page);
  }

</style>

HTML

<body>

  <header id="header">Header</header>

  <footer id="footer">footer</footer>

  <div id="content">
    Here your long long content...
    <p style="page-break-inside: avoid;">This text will not be broken between the pages</p>
  </div>

</body>

-2

Dựa trên một số bài đăng, tôi nghĩ rằng position: fixedlàm việc cho tôi.

body {
  background: #eaeaed;
  -webkit-print-color-adjust: exact;
}

.my-footer {
  background: #2db34a;
  bottom: 0;
  left: 0;
  position: fixed;
  right: 0;
}

.my-header {
  background: red;
  top: 0;
  left: 0;
  position: fixed;
  right: 0;
}
<html>

<head>
  <meta charset=utf-8 />
  <title>Header & Footer</title>

</head>

<body>
  <div>
    <div class="my-header">Fixed Header</div>
    <div class="my-footer">Fixed Footer</div>
    <table>
      <thead>
        <tr>
          <th>TH 1</th>
          <th>TH 2</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
        <tr>
          <td>TD 1</td>
          <td>TD 2</td>
        </tr>
      </tbody>
    </table>
  </div>
</body>

</html>

Nhấn Ctrl + P trong chrome để xem văn bản đầu trang & chân trang trên mỗi trang. Hy vọng nó giúp


12
Có, các tiêu đề và chân trang được in trên mỗi trang nhưng chúng chồng lấp nội dung của trang.
Tony
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.