2012-05-08 126 views
4

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

有没有一种方法可以告诉浏览器打印整个网页,即使它意味着将表格溢出到更多(纸张)页面?

该表格目前不以任何方式显示或打印样式。

+0

你可能要检查http://stackoverflow.com/questions/1763639/how-to-deal-with-page-breaks-when-printing-a-large-html-table – JayC

+0

...或者是表格不符合宽度的问题? Hrm ... – JayC

+0

它只是不适合。我想知道是否有办法强制表溢出到下一页。 – abeger

回答

0

您可以创建一个print.css来设置打印页面的内容风格。它链接到你的页面:

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

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

这是为什么?因为没有办法强制(欺骗)浏览器打印水平滚动的内容,无论是通过JavaScript还是通过CSS来打印。

以某种其他方式破坏表格数据,或为此使用样式表。

这里是一个article on writing CSS for print on A List Apart让你开始,祝你好运。

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/

似乎在火狐和Chrome的工作(也就是,它周围流动的细胞作为内联块的每一行),我不知道这个标准怎么说关于这一点,虽然。里程可能会有所不同。

编辑:作为一种奖励,似乎向计算单元添加计数器并不难,以便您知道单元格所在的列(仅在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>