最近做一小程序需要对Web打印进行精细的位置控制,IE自身的打印功能基本上算是半残废,无法自定义纸张,无法直接打印,并且由于浏览器版本或操作系统本身的设置问题,连最基本的边距设置都会有问题,总之打印已经成为Web程序的最大难题该控件只在IE中使用,使用该控件可以非常快速的实现这些功能。
ScriptX是一个商业工具软件,有免费版本和付费版本,如果过要使用其一些特殊的功能最好选择付费,二是使用第三方的控件ScriptX基本功能免费,但高级功能是收费的,下面我就把最近在项目中使用ScriptX的经验总结一下。
1、首先把ScriptX.cab放在一个目录下面,比如根目录
2、DOCTYPE不属于HTML标签它是一种标准通用标记语言的文档类型声明,在HTML中告诉浏览器编写页面所用的标记的版本。需要把object放在head之外
代码引入:
</头>
<对象id=“工厂”风格=“显示:无”viewastextclassid=“CLSID:1663ed61-23eb-11d2-b92f-008048fdd814”
代码=“ScriptX。驾驶室#版本=5,60,0360”></对象>
<鱼>
…
3、接下来我们要设置一下打印的路径和打印机的一些属性加入代码如下
functioninitprintersetting(){
工厂印刷。标题=“”;//页眉
工厂印刷。页脚=“”;//页脚
工厂印刷。左边界=1;//左边距
工厂印刷。左边空白=1.3;//上边距
工厂印刷。rightmargin=1;//右边距
工厂印刷。下空白=1.3;//下边距
工厂印刷。画像=false;//打印方向,真的纵向。假:横向
}
4、如下一个需求需要采用横向打印用本样式的打印隐藏项目控制style用于去除打印。
代码:
<样式媒体=“打印”>
。NOPRINT{显示:无;}<!——用本样式在打印时隐藏非打印项目–>
。pagenext{分页符后:总是;}<!——控制分页–>
</样式>
完整代码如下:
<%@页面语言=“C#”autoeventwireup=“true”解决方案=“printpreviewandunion.aspx。CS”继承=“TMIS。WebApp。customerma。printpreviewandunion”%>
<!DOCTYPEhtml>
<HTMLxmlns=“http://两。org/1999/XHTML”>
runat=“server”<头>
<脚本type=“text/javascript”src=“/脚本/lib/jQuery-1.4.2.版”></脚本>
<脚本type=“text/Javascript”src=“/脚本/lib/jquery-ui-1.8.5。习俗。js“></脚本>
<脚本type=“text/javascript”src=“/脚本/lib/jQuery。formatcurrency-1.4.0。js“></脚本>
<脚本type=“text/javascript”src=“/脚本/lib/jQuery的工具。JS”></脚本>
<脚本type=“text/javascript”src=“/脚本/lib/jQuery。数字。包。JS”></脚本>
<脚本type=“text/javascript”src=“/脚本/lib/jQuery。timepickr。js“></脚本>
<标题>webprint</名称>
<脚本type=“text/javascript”>
功能printpage(){
工厂。doprint(假);//设置为虚假,直接打印
}
功能initprintersetting(){
factory.printing.header=“”;//页眉
factory.printing.footer=“”;//页脚
factory.printing.leftmargin=1;//左边距
factory.printing.topmargin=1.3;//上边距
factory.printing.rightmargin=1;//右边距
factory.printing.bottommargin=1.3;//下边距
factory.printing.portrait=false;//打印方向,真的纵向。假:横向
}
美元(文档)。准备(功能()
initprintersetting();
})
</脚本>
<样式媒体=“打印”>
。NOPRINT{显示:无;}<!——用本样式在打印时隐藏非打印项目–>
。pagenext{分页符后:总是;}<!——控制分页–>
</样式>
</头>
<对象id=“工厂”风格=“显示:无”viewastextclassid=“CLSID:1663ed61-23eb-11d2-b92f-008048fdd814”
代码=“ScriptX。驾驶室#版本=5,60,0360”></对象>
<对象id=“浏览器”height=“0”width=“0”=“ClassIDCLSID:8856f961-340a-11d0-a96b-00c04fd705a2”viewastext><对象>
<鱼>
<表ID=“Form1”runat=“server”>
<DIV>
<中心>
<divclass=“div_content”style=“边框颜色:白色;”>
<divstyle='text-align:中心;填料顶部:15px;座垫:15px;“class='noprint”>
<输入ID=“btnprint”type=“按钮”value=“直接打印”style=“宽度:90px;身高:31px;”/>
和中的人;和;
#p#分页标题#e#
<输入ID='btnyes价值=“打印预览型=按钮的onclick='document。所有。.WebBrowser.execwb(7,1);“style='width:90px;身高:31px;”/>
</DIV>
<divid=“print_div_receipt”style=“宽度:950px;保证金:0汽车”>
<divstyle=“宽度:950px;保证金:0汽车”>
<div风格=“字体大小:20px;线高度:160%;padding:20px;“>
<divstyle=“填充底:10px;“></DIV>
<跨度风格=“字体大小:30px;字体家庭:宋体;”><b>打印内容</b></跨度>
</DIV>
</DIV>
</DIV>
</DIV>
</中心>
</DIV>
</表格>
</身体>
</HTML>
总结:WebBrowser是一个.NET控件类,WebBrowser控件不能由部分受信任的代码使用。控件可以在Windows窗体应用程序中承载网页以及支持浏览器的其他文档,对于在客户端或者服务器端运行Microsoft公司的IE浏览器的用户,使用ScriptX控件可以进行各种HTML文件的横纵向打印。