วิธีใช้ HTML เพื่อพิมพ์ส่วนหัวและส่วนท้ายในทุกหน้าที่พิมพ์ของเอกสาร?


516

เป็นไปได้ไหมที่จะพิมพ์หน้า HTML ด้วยส่วนหัวและส่วนท้ายที่กำหนดเองในแต่ละหน้าที่พิมพ์

ฉันต้องการเพิ่มคำว่า "UNCLASSIFIED" เป็นสีแดง, Arial, ขนาด 16 พอยต์ที่ด้านบนและด้านล่างของทุกหน้าที่พิมพ์โดยไม่คำนึงถึงเนื้อหา

หากต้องการพิมพ์เอกสารให้ชัดเจน 5 หน้าแต่ละหน้าควรมีส่วนหัวและส่วนท้ายที่กำหนดเอง

ใครบ้างรู้ว่าสิ่งนี้เป็นไปได้โดยใช้ HTML / CSS?



3
นี่เป็นคำถามที่ฉันพยายามตอบเป็นเวลานาน ดูเหมือนว่ากุญแจสำคัญของปัญหาจะเป็นองค์ประกอบ CSS เช่นหน้ากลางด้านบนเนื้อหาตำแหน่ง: วิ่ง (.. ) วิธีการที่จะสามารถมองหากเบราว์เซอร์ได้อย่างเต็มที่จะสนับสนุน @page: techrepublic.com/blog/webmaster/... alistapart.com/articles/boom alistapart.com/articles/building-books-with-css3 บางคนเปิดประเด็น: code.google.com / p / โครเมียม / ประเด็น / รายละเอียด? id = 47277 bugs.webkit.org/show_bug.cgi?id=15548
Daniel

ฉันได้โพสต์โซลูชันที่เข้ากันได้กับ Chrome ที่นี่ซึ่งจะเพิ่มส่วนหัวที่ทำงานอยู่ในเอกสารที่ไม่มีข้อความที่กว้างเกินไป ยังไม่มีวิธีแก้ปัญหาสำหรับท้ายกระดาษ
DoctorDestructo

2
รวมกับโซลูชั่น : ทั้งสองpisition: fixedและthead tbody tfootเทคนิคมีข้อเสียดังนั้นคุณควรรวมพวกเขาอ่านรายละเอียดเพิ่มเติมที่นี่
Mohammad Musavi

คำตอบ:


353

หากคุณใช้องค์ประกอบที่คุณต้องการให้เป็นส่วนท้ายและตั้งเป็นตำแหน่ง: คงที่และด้านล่าง: 0 เมื่อพิมพ์หน้าเอกสารจะทำซ้ำองค์ประกอบนั้นที่ด้านล่างของแต่ละหน้าที่พิมพ์ เช่นเดียวกันจะใช้ได้กับองค์ประกอบส่วนหัวเพียงแค่ตั้งค่าเป็น: 0 แทน

ตัวอย่างเช่น:

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

CSS:

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

62
ดูเหมือนจะไม่ทำงานหากคุณมีองค์ประกอบที่ครอบคลุมสองหน้า (ในกรณีของฉัน) - ส่วนท้ายจะถูกเขียนทับ
Benjol

77
ดูเหมือนว่าเบราว์เซอร์ webkit ไม่สนับสนุนสิ่งนี้อย่างถูกต้อง ถูกต้องฉันถ้าฉันผิด!
เกร็กลินด์

61
สิ่งนี้ดูเหมือนจะไม่ซ้ำในทุกหน้า
ไทสันทางตะวันตกเฉียงเหนือ

24
สิ่งนี้ไม่ได้ผลสำหรับฉันฉันใช้ Chrome 15.0 สิ่งที่มันทำคือการพิมพ์องค์ประกอบที่มันจะอยู่บนหน้าจอเช่นในช่วงกลางของหน้าถ้าเป็นสิ่งที่ฉันเลื่อนไป ไม่พิมพ์อย่างแน่นอนในทุกหน้า
chharvey

11
ฉันทดสอบบน Firefox และ Chrome ใน Firefox วิธีนี้ใช้งานได้บน Chrome ไม่ใช่
Jaro

131

ฉันเชื่อว่าคำตอบที่ถูกต้องคือ HTML 5 และ CSS3 ไม่รองรับการพิมพ์ส่วนหัวของหน้าและท้ายกระดาษในprintสื่อ

และในขณะที่คุณอาจจำลองด้วย:

  • ตาราง
  • บล็อกตำแหน่งคงที่

พวกเขาแต่ละคนมีข้อบกพร่องที่ป้องกันพวกเขาจากการเป็นทางออกทั่วไปที่เหมาะ


36
อย่าไว้ใจคำตอบอื่น ๆ พวกเขาอาจทำงานในกรณีพิเศษ แต่จะทำลายโดยทั่วไปอย่างน่ากลัว ไม่มีวิธีการแก้ปัญหาที่น่าเชื่อถือจนกว่าจะมีการใช้งาน @page margin ในเบราว์เซอร์หลัก ดูที่: en.wikipedia.org/wiki/…
user2847643

21
น่าเสียดายที่ฉันต้องลงคะแนนให้ แม้ว่าเราจะมีปี 2561 ... ทำไมแฮ็คก็ไม่ให้เรา@footerด้วยcontent:"stuff"หรือเหมือนกัน
Kai Noack

1
มีข้อกำหนดในการสร้างที่W3Cเพื่อแก้ไขสถานการณ์เหล่านี้
Mendy

ฉันคิดว่านี่เป็นคำตอบที่ดีที่สุด ปัญหาคือผู้จำหน่ายเบราว์เซอร์ คุณสามารถสร้างไฟล์ PDF ดูดีนอกเบราว์เซอร์ใช้ CSS เพจสื่อกับเครื่องมือเชิงพาณิชย์เช่นนี้ (และมีอื่น ๆ ): เสาอากาศบ้านantennahouse.com/formatterเจ้าชายprincexml.com
markg

ฉันกำลังทำสิ่งนี้เป็นความคิดเห็นไม่ใช่คำตอบดังนั้นโปรดอย่าตีฉันด้วย "OP ไม่ได้ถาม ... " ความเป็นไปได้อย่างหนึ่งคือใช้ตัวสร้าง PDF ที่ให้คุณตั้งค่าส่วนหัวและส่วนท้ายแบบคงที่และแสดงมุมมองของคุณในรูปแบบนี้เมื่อผู้ใช้ตัดสินใจว่าพวกเขาต้องการ "ตัวอย่างก่อนพิมพ์" จริงหรือเอกสารที่พิมพ์ HTML ใช้สำหรับการแสดงผลหน้าจอและหน้าจอไม่มีแนวคิดของหน้า PDF อาจยืนสำหรับรูปแบบเอกสารที่พิมพ์ (ฉันรู้ว่ามันไม่ได้) และเป็นรูปแบบที่ส่วนหัวของหน้าและท้ายกระดาษมีความเกี่ยวข้อง NReco.PdfGenerator ราคาไม่แพงมากเพื่อวัตถุประสงค์ทางธุรกิจหรืออิสระที่จะลอง
Newclique

71

ฉันเพียงแค่ใช้เวลาดีกว่าครึ่งหนึ่งของวันของฉันขึ้นมาพร้อมกับโซลูชั่นที่ทำงานจริงสำหรับฉันและคิดว่าฉันจะแบ่งปันสิ่งที่ผมทำ ปัญหาเกี่ยวกับวิธีแก้ไขปัญหาข้างต้นที่ฉันพบคือองค์ประกอบทั้งหมดของฉันจะทับซ้อนกับส่วนท้ายที่ฉันต้องการที่ด้านล่างของหน้า เพื่อที่จะได้รับรอบนี้ผมใช้ CSS ต่อไปนี้:

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;
  }
}

page-break-insideสำหรับpและcontent-blockเป็นเรื่องสำคัญมากสำหรับผม เมื่อใดก็ตามที่ฉันมีpดังต่อไปนี้h*ฉันจะห่อหุ้มพวกเขาทั้งสองในdiv class = "content-block">เพื่อให้แน่ใจว่าพวกเขาอยู่ด้วยกันและไม่แตกสลาย

ฉันหวังว่าบางคนจะพบว่ามีประโยชน์เพราะฉันใช้เวลาประมาณ 3 ชั่วโมงในการคิดออก (ฉันยังใหม่กับ CSS / HTML ดังนั้นจึงมี ...

แก้ไข

ตามคำขอในความคิดเห็นฉันกำลังเพิ่มเอกสาร HTML ตัวอย่าง คุณจะต้องการคัดลอกสิ่งนี้ลงในไฟล์ HTML เปิดแล้วเลือกพิมพ์หน้า ตัวอย่างก่อนพิมพ์ควรแสดงการทำงานนี้ มันใช้งานได้ใน Firefox และ IE ในตอนท้าย แต่ Chrome ทำให้ตัวอักษรเล็กพอที่จะใส่ลงในหน้าเดียวดังนั้นมันจึงไม่ทำงาน

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
ขอบคุณสำหรับสิ่งนี้ฉันหวังว่าจะมีตัวอย่างเอกสาร HTML ในคำตอบเพื่อให้ง่ายขึ้น
Eric Kigathi

2
@EricKigathi สังเกต ฉันจะพยายามทำให้สุดสัปดาห์นี้และแก้ไขคำตอบของฉัน
brittenb

2
@EricKigathi ไม่ได้กำหนดวันหยุดสุดสัปดาห์ แต่ฉันได้เพิ่มโค้ด HTML ตัวอย่าง หวังว่าจะช่วย!
brittenb

ขอบคุณ @brittenb - ได้รับการชื่นชมมากคุณได้รับการอภัยสำหรับวันครบกำหนดที่ขาดหายไป; )
Eric Kigathi

3
ไม่ทำงานสำหรับหน้าสองสำหรับส่วนหัว ยังคงทับซ้อน
Fei Xue - MSFT

17

ฉันค้นหาวิธีแก้ปัญหามาหลายปีแล้วและพบว่าโพสต์นี้เกี่ยวกับวิธีพิมพ์ส่วนท้ายที่ทำงานได้หลายหน้าโดยไม่ทับซ้อนเนื้อหาของหน้าเว็บ

ความต้องการของฉันคือ IE8 จนถึงตอนนี้ฉันได้พบแล้วว่านี่ไม่สามารถใช้งานได้ใน Chrome [ อัปเดต ] ตั้งแต่วันที่ 1 มีนาคม 2018 จะสามารถใช้งานได้ใน Chrome เช่นกัน

ตัวอย่างนี้ใช้ตารางและองค์ประกอบ tfoot โดยการตั้งค่าสไตล์ css:

tfoot {display: table-footer-group;}

2
ใช้งานได้ในเบราว์เซอร์ทั้งหมดและใน asp (ซึ่งมีปัญหาบางอย่างกับส่วนท้ายของหน้า) ใช้สิ่งนี้ฉันพูด
DWolf

17
@DWolf ความคิดเห็นแรกให้ฉันหวังว่าใหญ่ และคุณทำลายฉันในหนึ่งประโยคหลังจากนั้น
C0ZEN

ที่จริงฉันมีงานนี้ใน Chrome แล้ว ฉันไม่ได้ทำงานใน Chromium ที่ใช้ Linux รุ่นเก่ามาก แต่ Chrome ทำงานได้ดีมาก
njfife

ตั้งแต่ 2019 มันใช้งานได้ใน Chrome!
Oleg

13

การแก้ปัญหาเวทย์มนตร์นั้นนำทุกสิ่งมาไว้ในโต๊ะเดียว

  • thead : นี่สำหรับส่วนหัวซ้ำ ๆ

  • tfoot : ส่วนท้ายซ้ำ

  • tbody : เนื้อหา

และทำทีละอันทีดีและใส่ทุกอย่างไว้ในกอง

รหัส ::

<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;
} 

พิเศษ : เพื่อป้องกันการทับซ้อนกับหลายหน้า ชอบ:

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

ซึ่งส่งผลให้ล้นที่จะทำให้สิ่งที่ทับซ้อนกับส่วนหัวภายในตัวแบ่งหน้า ..

>> ใช้ดังนั้น: page-break-inside: avoid !important;กับคลาสarticleนี้

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

ค่อนข้างง่ายหวังว่านี่จะให้ผลลัพธ์ที่ดีที่สุดที่คุณต้องการ

ขอแสดงความนับถืออย่างสูง. ;)

แหล่งที่มา ..


ทางออกที่ดีที่สุดที่นี่ หมายเหตุเล็กน้อย: Flexbox อาจทำให้เกิดพฤติกรรมที่ไม่คาดคิด หากคุณต้องการให้ส่วนท้ายของหน้า lsat เป็นส่วนท้ายคุณจะต้องใช้โซลูชันและโซลูชันจาก @Infotekka
Arseniy-II

11

จากคำถามนี้ - เพิ่มสไตล์ต่อไปนี้ลงในสไตล์ชีทสำหรับพิมพ์เท่านั้น โซลูชันนี้จะทำงานใน IE และ Firefox แต่ไม่ใช่ใน Chrome (ตั้งแต่รุ่น 21):

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

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

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

1
ฉันได้พบวิธีแก้ปัญหานี้ทำงานเพียงอย่างเดียว ยังไม่ได้ทดสอบเบราว์เซอร์ทั้งหมด แต่ทำงานได้ใน Firefox!
Primoz Rome

2
2017และยังไม่ทำงานใน Chrome! แต่ทำงานใน Firefox
Mehdi Dehghani

@MehdiDehghani: เลวของฉัน .. การออกความคิดเห็น
Fr0zenFyr

10

ใช้ตัวแบ่งหน้าเพื่อกำหนดสไตล์ใน 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;
    } 
}

จากนั้นเพิ่มมาร์กอัปในเอกสารในตำแหน่งที่เหมาะสม:

<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>

อ้างอิง


32
สิ่งนี้จะไม่พิมพ์ส่วนหัวและส่วนท้ายในแต่ละหน้า มันระบุ "หน้า" จำนวนมากที่มีการคาดเดาที่ดีที่สุด หากคุณไม่ทราบความสูงของเอกสารของคุณ (จำนวนหน้า) มันก็ไร้ประโยชน์
rainabba

@rainabbaif the document was printed onto 5 pages
Paul Sweatte

4
นั่นเป็นเพียงตัวอย่าง ไม่ควรใช้เพื่อชี้แนะแนวทางและแก้ไขปัญหาของคุณอย่างแม่นยำ
igorsantos07

@ igorsantos07 ไม่ได้หมายความว่าshould (เป็นเพียงตัวอย่าง) คำว่า(แค่ตัวอย่าง) ใช้โดย OP และ(เพียงแค่ตัวอย่าง) OP ไม่ทำงานอีกต่อไปดีกว่าที่จะให้คำตอบเฉพาะ(แค่ตัวอย่าง) มีคำตอบทั่วไปและ (เป็นเพียงตัวอย่าง) ภาษา (HTML / CSS) และข้อมูลจำเพาะที่เป็นปัญหาได้รับการออกแบบมาเพื่อหลีกเลี่ยงการอ้อมและทำให้เอกสารง่ายขึ้น? (เป็นเพียงตัวอย่าง) แล้วทำไมล่ะ มิฉะนั้นทำไมไม่ don'tIfififififIf
Paul Sweatte

5

ฉันพยายามต่อสู้กับการต่อสู้ที่ไร้ประโยชน์นี้โดยรวมกฎ tfoot & css แต่ใช้งานได้เฉพาะกับ Firefox :( เมื่อใช้ css ธรรมดาเนื้อหาจะไหลไปตามส่วนท้ายเมื่อใช้ tfoot ส่วนท้ายของหน้าสุดท้ายไม่ได้อยู่ด้านล่าง นี่เป็นเพราะส่วนท้ายของตารางมีความหมายสำหรับตารางไม่ใช่เพจจริงทดสอบบน Chrome 16, Opera 11, Firefox 3 & 6 และ 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

วิธีการหนึ่งที่ใช้งานได้เฉพาะกับการเพิ่มส่วนหัวในทุกหน้าคือการห่อเนื้อหาของคุณใน<table>และจากนั้นใส่เนื้อหาส่วนหัวของคุณใน<thead>แท็กและเนื้อหาของคุณใน<tbody>แท็กเช่น:

<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>

ใช้งานได้ใน Chrome ไม่แน่ใจ 100% เกี่ยวกับเบราว์เซอร์อื่น


1
ทำงานได้ตราบใดที่ thead และ tfoot ของเราไม่มีแถว <tr> จำนวนมากดูเหมือนว่า thead และ tfoot จะมีชุดความสูงสูงสุดในกรณีของฉันฉันมี 9 <tr> แถวใน thead เมื่อฉันลดลงเหลือ 3 หรือ 5 ใช้งานได้
Sundara Prabu

นั่นเป็นเคล็ดลับที่เรียบร้อย! Thead ใช้งานได้อย่างมีเสน่ห์ แต่ tfoot ไม่ได้ทำ มีความคิดเกี่ยวกับวิธีทำให้มันทำงานอย่างไร
Irikos

Tfoot ทำงานได้ในเบราว์เซอร์ แต่ไม่ได้อยู่ใน MS word Thead ทำงานได้ทั้งสองอย่าง
Irikos

3

หากคุณสามารถใช้ javascipt ให้ลูกค้าจัดการการวางเนื้อหาโดยใช้ javascript เพื่อวางองค์ประกอบตามพื้นที่ว่าง

คุณสามารถใช้ปลั๊กอิน jquery columnizer เพื่อจัดวางเนื้อหาของคุณแบบไดนามิกในบล็อกขนาดคงที่และวางตำแหน่งส่วนหัวและส่วนท้ายของคุณเป็นส่วนหนึ่งของรูทีนการแสดงผล http://welcome.totheinter.net/columnizer-jquery-plugin/

ดูตัวอย่างที่ 10 http://welcome.totheinter.net/autocolumn/sample10.html

เบราว์เซอร์จะยังคงเพิ่มส่วนหัวหรือส่วนท้ายของตัวเองหากเปิดใช้งานในระบบปฏิบัติการ รูปแบบที่สอดคล้องกันระหว่างแพลตฟอร์มและเบราว์เซอร์อาจต้องใช้ CSS แบบมีเงื่อนไข


3
การสาธิตที่ให้มาไม่ได้ทำงาน (หน้าไม่แตกเลือดไหลต่อกันเป็นต้น) ทำให้มีเนื้อหาที่เป็นสากลมากขึ้น
rainabba

1
ฉันควรจะชี้แจง ลิงก์ที่ให้ไว้เป็นตัวอย่างของไลบรารี javascript สำหรับการจัดวางเนื้อหาข้ามคอนเทนเนอร์และไม่ได้ตั้งค่าสำหรับการพิมพ์ ลิงค์นี้มีไว้เพื่อเป็นตัวอย่างของการใช้ js เพื่อจัดวางเนื้อหาภายในขอบเขตที่ระบุ ฉันใช้ js เป็นเครื่องมือเรนเดอร์กับ wkhtmltopdf เพื่อสร้างตำราจากเนื้อหาฐานข้อมูล
sparkalow

คำถามเกี่ยวกับการพิมพ์
Greg Blass

2

ฉันประหลาดใจและไม่ประทับใจที่ Chrome มีการสนับสนุนการพิมพ์ CSS ที่แย่มาก

งานของฉันต้องแสดงส่วนท้ายที่แตกต่างกันเล็กน้อยในแต่ละหน้า ในกรณีที่ง่ายที่สุดเพียงแค่บทที่เพิ่มขึ้นและหมายเลขหน้า ในกรณีที่ซับซ้อนมากขึ้นข้อความในส่วนท้าย - ตัวอย่างเช่นเชิงอรรถจำนวนมาก - ซึ่งสามารถขยายได้ในขนาดทำให้สิ่งที่อยู่ในพื้นที่เนื้อหาของหน้านั้นจะหดและส่วนหนึ่งของมันเพื่อ reflow ไปยังหน้าถัดไป

การพิมพ์ CSS ไม่สามารถแก้ปัญหานี้ได้อย่างน้อยก็ไม่รองรับ shoddy browser ในปัจจุบัน แต่การก้าวไปข้างนอกของการพิมพ์ CSS3 สามารถยกของหนักได้มาก:

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;
  }
}

ในตัวอย่างมีโค้ดอีกเล็กน้อยรวมถึง Cat Ipsum; แต่มีการใช้ js เพียงเพื่อแสดงให้เห็นว่าส่วนหัว / ส่วนท้ายสามารถแตกต่างกันโดยไม่แบ่งหน้า กุญแจสำคัญคือการใช้เคล็ดลับคอลัมน์ติดด้านล่างจาก CSS Flexbox แล้วนำไปใช้กับหน้าของความสูงคงที่ที่รู้จักกัน - ในกรณีนี้กระดาษขนาดตัวอักษรสหรัฐขนาด 8.5 "x11" ด้วย. 5 "ระยะขอบจะออกไปwidth: 7.5inและheight: 10inแน่นอนเมื่อ CSS flex container มีการบอกขนาดที่แน่นอน ( div.page) มันเป็นเรื่องง่ายที่จะทำให้ส่วนหัวและท้ายกระดาษขยายและหดในแบบที่พวกเขาใช้ในการพิมพ์ทั่วไป

สิ่งที่เหลือคือการไหลเนื้อหาของหน้าเมื่อส่วนท้ายเติบโตถึง 8 เชิงอรรถไม่ใช่ 3 ในกรณีของฉันเนื้อหาได้รับการแก้ไขเพียงพอที่ฉันไม่ต้องกังวลเกี่ยวกับมัน แต่ฉันแน่ใจว่ามีวิธี ที่จะทำมัน วิธีหนึ่งที่ทำให้นึกถึงคือเปลี่ยนหัวกระดาษและท้ายกระดาษให้เป็นความกว้าง 100% ลอยตัวจากนั้นวางตำแหน่งด้วย Javascript เบราว์เซอร์จะจัดการการขัดจังหวะการไหลของเนื้อหาปกติให้กับคุณโดยอัตโนมัติ


0

นี่คือสิ่งที่คุณต้องการพิมพ์อย่างเดียวหรือไม่ คุณสามารถเพิ่มลงในทุกหน้าในเว็บไซต์ของคุณและใช้ CSS เพื่อกำหนดแท็กเป็นสื่อสิ่งพิมพ์อย่างเดียว

ตัวอย่างเช่นนี่อาจเป็นหัวข้อตัวอย่าง:

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

และใน CSS ของคุณให้ทำสิ่งนี้:

<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>

สุดท้ายเพื่อรวมส่วนหัว / ท้ายกระดาษในทุกหน้าคุณอาจใช้การรวมฝั่งเซิร์ฟเวอร์หรือถ้าคุณมีหน้าใด ๆ ที่ถูกสร้างขึ้นด้วย PHP หรือ ASP คุณสามารถเขียนโค้ดลงในไฟล์ทั่วไปได้

แก้ไข:

คำตอบนี้มีวัตถุประสงค์เพื่อให้วิธีการแสดงบางสิ่งบางอย่างในรุ่นที่พิมพ์ทางกายภาพของเอกสารในขณะที่ไม่แสดงเป็นอย่างอื่น อย่างไรก็ตามเช่นเดียวกับความคิดเห็นที่แนะนำก็ไม่ได้แก้ปัญหาของการมีส่วนท้ายในหลายหน้าที่พิมพ์เมื่อเนื้อหาล้น

ฉันจะทิ้งไว้ที่นี่ในกรณีที่มีประโยชน์


4
+1 สำหรับการใช้จอแสดงผลมากกว่าการมองเห็น - การมองเห็น: ซ่อนพื้นที่ที่สงวนไว้ในขณะที่จอแสดงผล: ไม่มีการยุบช่องว่างบันทึกกระดาษและทำให้ดาวเคราะห์โลกอยู่รอดได้นานขึ้น
เฟนตัน

3
-1: แม้ว่าตัวอย่างที่ดีของสไตล์ชีทการพิมพ์ แต่ก็ไม่ได้จัดการกับปัญหาเมื่อเนื้อหาล้นหน้ากระดาษ .. เช่นนี้จะแสดงเฉพาะส่วนท้ายของหน้าสุดท้าย
NotMe

0

หากคุณใช้เครื่องมือเทมเพลตเช่น Asp.net Razor Engine หรือ Angular ฉันคิดว่าคุณต้องสร้างหน้าของคุณใหม่และแยกหน้าเป็นหลาย ๆ หน้าจากนั้นคุณสามารถมาร์กอัปแต่ละหน้าได้อย่างอิสระและวางส่วนหัวและท้ายกระดาษในธีม ตัวอย่างหนึ่งอาจเป็นร้อง:

@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

ฉันพบทางออกหนึ่ง แนวคิดพื้นฐานคือการสร้างตารางและในส่วน thead วางข้อมูลส่วนหัวใน tr และโดย css บังคับให้แสดงว่า tr ในการพิมพ์ที่ไม่ได้อยู่ในหน้าจอเท่านั้นส่วนหัวปกติของคุณควรจะแสดงเฉพาะในหน้าจอที่ไม่ได้พิมพ์ ทำงาน 100% ในการพิมพ์หลายหน้า รหัสตัวอย่างอยู่ที่นี่

<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

ลองสิ่งนี้สำหรับฉันมันใช้งานได้กับ Chrome, Firefox และ Safari คุณจะได้รับส่วนหัวและส่วนท้ายคงที่แต่ละหน้าโดยไม่ทับซ้อนเนื้อหาของหน้า

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

จากบางโพสต์ฉันคิดว่าposition: fixedเหมาะกับฉัน

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>

กด Ctrl + P ในโครเมี่ยมเพื่อดูข้อความส่วนหัวและส่วนท้ายของแต่ละหน้า หวังว่ามันจะช่วย


12
ใช่ส่วนหัวและส่วนท้ายจะถูกพิมพ์ทุกหน้า แต่ทับซ้อนกับเนื้อหาของหน้า
Tony
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.