Html 在打印页面上使用Google Chrome重复表格标题

Html 在打印页面上使用Google Chrome重复表格标题,html,google-chrome,html-table,Html,Google Chrome,Html Table,我希望在每个打印页面上重复我的表格标题,但是Google Chrome似乎不支持标签……有办法解决这个问题吗?我正在使用谷歌Chrome v13.0.782.215 表格代码非常简单…没有什么特别之处: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns

我希望在每个打印页面上重复我的表格标题,但是Google Chrome似乎不支持
标签……有办法解决这个问题吗?我正在使用谷歌Chrome v13.0.782.215

表格代码非常简单…没有什么特别之处:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <style type="text/css" media="all">
           @page {
              size: landscape;
              margin-top: 0;
              margin-bottom: 1cm;
              margin-left: 0;
              margin-right: 0;
           }
           table {
               border: .02em solid #666; border-collapse:collapse; 
               width:100%; 
           }
           td, th {
               border: .02em solid #666; font-size:12px; line-height: 12px; 
               vertical-align:middle; padding:5px; font-family:"Arial";
           }
           th { text-align:left; font-size:12px; font-weight:bold; }
           h2 { margin-bottom: 0; }
       </style>
   </head>
   <body>
   <h2>Page Title</h2>
   <table>
       <thead>
           <tr class="row1">
               <th><strong>Heading 1</strong></th>
               <th><strong>Heading 2</strong></th>
               <th><strong>Heading 3</strong></th>
               <th><strong>Heading 4</strong></th>
               <th><strong>Heading 5</strong></th>
           </tr>
       </thead>
       <tbody>
           <tr class="row2">
              <td width="30">...</td>
              <td width="30">...</td>
              <td width="90">....</td>
              <td width="190">...</td>
              <td width="420">...</td>
           </tr>
           <tr class="row1">
              <td width="30">...</td>
              <td width="30">...</td>
              <td width="90">....</td>
              <td width="190">...</td>
              <td width="420">...</td>
           </tr>
           ....
       </tbody>
   </table>
   </body>
</html>

@页面{
规模:景观;
边际上限:0;
边缘底部:1cm;
左边距:0;
右边距:0;
}
桌子{
边框:.02em实心#666;边框折叠:折叠;
宽度:100%;
}
td,th{
边框:.02em实心#666;字体大小:12px;线条高度:12px;
垂直对齐:中间;填充:5px;字体系列:“Arial”;
}
th{文本对齐:左;字体大小:12px;字体大小:粗体;}
h2{页边距底部:0;}
页面标题
标题1
标题2
标题3
标题4
标题5
...
...
....
...
...
...
...
....
...
...
....

欢迎对此有任何见解。

我相信这是Chrome的一个优势。

对于公司内基于浏览器的系统,我建议用户使用firefox或IE;对于面向公众的网站,我认为如果用户使用chrome或具有类似限制的浏览器(opera),我们真的无能为力。

现在可以使用jQuery在chrome中打印。。。。请尝试这段代码(很抱歉,在我修改之前忘记了这段代码的创建者-我的英语不好:D呵呵)


文件标题
@媒体印刷品{
表{page break after:auto;}
tr{内部分页符:避免;}
td{内部分页符:自动;}
thead{display:table header group}
.世界其他地区流体[类别*=“跨度”]{
最小高度:20px;
}
}
@第{
边缘顶部:1cm;
右边距:1cm;
边缘底部:2cm;
左边距:2厘米;
尺寸:人像;
/*
规模:景观;
-webkit变换:旋转(-90度);-moz变换:旋转(-90度);
过滤器:progid:DXImageTransform.Microsoft.BasicImage(旋转=3);
*/
};
标题1
标题2
第1节第2节
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
TD 1TD 2
jQuery(文档).ready(函数()
{
var printHeader=$('#print header wrapper').html();
var div_页面断路器=“”;
每页var=25;
$(“#表_数据”)。每个(函数(索引、元素)
{
//我们有多少页的行?
var pages=Math.ceil($('tbody tr').length/每页);
//如果我们只有一页就没有了
如果(页数==1){
返回;
}
//去拿我们要放的桌子
变量表_至_分割=$(元素);
var当前页面=1;
//循环浏览我们的每一页

例如(当前页面=1;当前页面更新2017-03-22:重复表标题终于在Chrome中实现了!(事实上,我认为它们是在很久以前实现的。)这意味着您可能不再需要此解决方案;只需将列标题放在
标记中,您就可以完成所有设置。仅在以下情况下使用以下解决方案:

  • 你在Chrome的实现中遇到了显示停止错误
  • 您需要“额外功能”,或者
  • 您需要支持一些仍然不支持重复标题的古怪浏览器

解决方案(过时)

下面的代码演示了我找到的用于多页表格打印的最佳方法。它具有以下功能:

  • 列标题在每页上重复
  • 无需担心纸张大小或可容纳多少行,浏览器会自动处理所有内容
  • 分页符只在行之间出现
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>DOCUMENT TITLE</title> <link rel="stylesheet" type="text/css" href="assets/css/bootstrap.css"/> <style type="text/css"> @media print{ table { page-break-after:auto;} tr { page-break-inside:avoid;} td { page-break-inside:auto;} thead { display:table-header-group } .row-fluid [class*="span"] { min-height: 20px; } } @page { margin-top: 1cm; margin-right: 1cm; margin-bottom:2cm; margin-left: 2cm;'; size:portrait; /* size:landscape; -webkit-transform: rotate(-90deg); -moz-transform:rotate(-90deg); filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3); */ }; </style> </head> <body> <div id="print-header-wrapper"> <div class="row-fluid">HEADER TITLE 1</div> <div class="row-fluid">HEADER TITLE 2</div> </div> <div class="row-fluid" id="print-body-wrapper"> <table class="table" id="table_data"> <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> </tbody> </table> <div id="lastDataTable"></div> </div> <script type="text/javascript"> jQuery(document).ready(function() { var printHeader = $('#print-header-wrapper').html(); var div_pageBreaker = '<div style="page-break-before:always;"></div>'; var per_page = 25; $('#table_data').each(function(index, element) { //how many pages of rows have we got? var pages = Math.ceil($('tbody tr').length / per_page); //if we only have one page no more if (pages == 1) { return; } //get the table we're splutting var table_to_split = $(element); var current_page = 1; //loop through each of our pages for (current_page = 1; current_page <= pages; current_page++) { //make a new copy of the table var cloned_table = table_to_split.clone(); //remove rows on later pages $('tbody tr', table_to_split).each(function(loop, row_element) { //if we've reached our max if (loop >= per_page) { //get rid of the row $(row_element).remove(); } }); //loop through the other copy $('tbody tr', cloned_table).each(function(loop, row_element) { //if we are before our current page if (loop < per_page) { //remove that one $(row_element).remove(); } }); //insert the other table afdter the copy if (current_page < pages) { $(div_pageBreaker).appendTo('#lastDataTable'); $(printHeader).appendTo('#lastDataTable'); $(cloned_table).appendTo('#lastDataTable'); } //make a break table_to_split = cloned_table; } }); }); </script> </body> </html>
<style>
  thead {
      display: table-row-group;
  }
</style>
<table>
  <thead>
    <tr>
      <th>number</th>
    </tr>
  </thead>
  <tbody id="myTbody">
  </tbody>
</table>
<script>
  for (i = 1; i <= 100; i++) {
    document.getElementById("myTbody").innerHTML += "<tr><td>" + i + "</td></tr>";
  }
</script>
<table>
 <thead>
    <tr>
      <td>
        <img ...>
      </td>
@media print { thead img { page-break-inside: auto !important; } }