使用window.print()打印巨大的表只打印一页

时间:2012-05-08 19:15:46

标签: javascript html css printing

我有一个非常宽的报告表的网页 - 几十列,相当多的水平滚动。当我尝试使用window.print()打印页面时,浏览器(Firefox或Chrome)只打印一页并关闭其余部分。

有没有办法告诉浏览器打印整个网页,即使这意味着将表格溢出到更多(纸质)页面?

当前表格没有以任何方式显示或打印。

3 个答案:

答案 0 :(得分:2)

Print a very wide HTML table without clipping right hand sidePrint Stylesheets for pages with long horizontal tables 似乎表明你有点搞砸了,如果你必须采取CSS唯一的方法。我唯一可以想到可能工作(是的,我试过)是有点疯狂之类

<style media="print">
table, table * {
 display:inline-block;
}
table tr {display:block;}
table td {padding:10px;}
</style>

当然,它试图取消普通的表格样式。

请参阅http://jsfiddle.net/jfcox/WTRxm/,并且显然是可打印版本http://jsfiddle.net/jfcox/WTRxm/show/

似乎可以在Firefox和Chrome中运行(也就是说,它会将单元格作为每行的内联块流动)但我不知道标准对此有何看法。里程可能会有所不同。

编辑:作为奖励,似乎不太难将细胞添加到细胞中,以便您知道细胞所在的列(仅在铬中测试)。

<style media="print">
table, table * {
 display:inline-block;
}
table tr {display:block;
    counter-reset: section; }
table td {padding:10px;}
table td:before {
    counter-increment: section;
    content: counters(section, ".") " ";
}    

</style>

答案 1 :(得分:0)

  

当前表格没有以任何方式显示或打印。

为什么?你写一个指定的打印样式表要好得多,因为没有办法强制(欺骗)浏览器打印水平滚动的内容,既不是通过JavaScript也不是通过CSS。

以其他方式破坏表格数据,或者为此目的使用样式表。

这里有article on writing CSS for print on A List Apart让你入门,祝你好运。

答案 2 :(得分:-1)

您可以创建print.css来为您的打印页面设置样式。将其链接到您的页面:

<link rel="stylesheet" type="text/css" media="print" href="print.css" />