网页的横向打印的三种方案(print your page landscape)
关于网页打印,window.print()提供的功能离远离一般的需求,很多情况下需要编程扩展,目前网上有很多关于网页打印的,但大多采用了ActiveX控件或IE内置的一些Object,由于ActiveX的安全性因素,实用性大打折扣, 关于网页的横向打印,确切的说,使用标准JS或CSS方法是不可行的,然而,我们可以根据需求来考虑以下三种方案
方案一:CSS滤镜实现
MS为IE浏览器(5.0以上)提供了一套不错的CSS滤镜,能够实现很多效果(见http://www.cnblogs.com/blodfox777/archive/2008/08/14/1267679.html),我们可以利用它和CSS的打印@media来使页面布局,从而模拟横向打印:
![](/Images/OutliningIndicators/ContractedBlock.gif)
方案二:替换页面
上面的方法只是模拟,而不能等同于真正的"文件"-->"打印"中设置的横打,而且只能在IE中使用,接下来的方法是通过DHTML4和JS1.2 (IE4以上支持)来实现替换打印,也就是说预先做好另一个专门用来打印的页面B,在打印页面A时,实则打印页面B(甚至可以是B.doc),代码很简单,如下:
这个方案虽然比较麻烦,但应该能够兼容各种浏览器吧
![](/Images/OutliningIndicators/ContractedBlock.gif)
方案三:ActiveX控件
实在不行的话,就使用ActiveX控件吧,由于ActiveX控件安全性、版权、兼容性等原因,我个人不是很喜欢,但一些打印控件,比如ScriptX做的确实非常好,下面有一段ScriptX控制打印的例子:
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<script defer>
function SetPrintSettings() {
// -- advanced features
factory.printing.SetMarginMeasure(2) // measure margins in inches
factory.SetPageRange(false, 1, 3) // need pages from 1 to 3
factory.printing.printer = "HP DeskJet 870C"
factory.printing.copies = 2
factory.printing.collate = true
factory.printing.paperSize = "A4"
factory.printing.paperSource = "Manual feed"
// -- basic features
factory.printing.header = "This is MeadCo"
factory.printing.footer = "Advanced Printing by ScriptX"
factory.printing.portrait = false
factory.printing.leftMargin = 1.0
factory.printing.topMargin = 1.0
factory.printing.rightMargin = 1.0
factory.printing.bottomMargin = 1.0
}
</script>