最近在做一个打印含有表格的Web页面的功能时,在一个问题上纠缠了很久。具体表现是,在我自己的电脑上打印时,一切都很正常,一张纸可以容纳整个表格。但是在客户的电脑上打印时,表格要占用两张纸,而且右边的一部分没了。
查找了很多资料,终于发现这是IE版本的问题。从IE7开始增加了一个“高级打印”的功能,在打印的时候页面内容会自动缩放,以适合打印纸张的大小。我用的是IE8,而客户用的是IE6,所以出现了这样诡异的问题。
找到了原因,解决方法自然就出来了:按照纸张的大小调整页面的范围。客户使用的是A4纸,宽度是210mm,高度是297mm,算上19mm的页边距,计算出表格的大小应该是172mm*253mm,最好去掉零头,取170mm*250mm,否则表格的边框可能打印不出来。
接下来在表格的CSS样式上设置width为170mm,height为250mm即可。这样设置后表格会比原来的小,所以还要把表格中的字体缩小。根据试验,发现A4纸使用x-small的字体大小就足够了。
这种方法看上去很笨,不过总算应付了这个打印的功能。但如果要这个页面既可以在浏览器上正常观看又可以正常打印的话,这个方法就无效了。所以,根本的解决方法是把IE升级到7以上的版本。