方法一:
首先想问的是java打印机制?有这东东吗?
直接把这个(window.print();)复制到js中,就能打印出当前页面中的内容。
方法二:
然后将要打印的部分用<!--startprint-->和<!--endprint-->设置打印起始和结束部位,
只需将二者放在页面中需要打印的部分两端即可。
可以通过window.print()对当前页面进行打印,调用这个函数和点击IE菜单栏中的“打印”作用是一样的,这个函数在调用时还会触发html的两个事件:onbeforeprint,onafterprint对于在打印时页面中不想打印的元素可以在onbeforeprint这个时间的处理函数中进行屏蔽,一般是让该元素不显示,style.display="none",onafterprint是打印后会触发的事件。
WebBrowser是IE内置的浏览器控件,无需用户下载.
一、WebBrowser控件
<object ID='WebBrowser' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-
00C04FD705A2'></object>
二、WebBrowder控件的方法
//打印 WebBrowser1.ExecWB(6,1);
//打印设置 WebBrowser1.ExecWB(8,1);
//打印预览 WebBrowser1.ExecWB(7,1);
关于这个组件还有其他的用法,列举如下:
WebBrowser.ExecWB(1,1) 打开
WebBrowser.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
WebBrowser.ExecWB(4,1) 保存网页
WebBrowser.ExecWB(6,1) 打印
WebBrowser.ExecWB(7,1) 打印预览
WebBrowser.ExecWB(8,1) 打印页面设置
WebBrowser.ExecWB(10,1) 查看页面属性
WebBrowser.ExecWB(15,1) 好像是撤销,有待确认
WebBrowser.ExecWB(17,1) 全选
WebBrowser.ExecWB(22,1) 刷新
WebBrowser.ExecWB(45,1) 关闭窗体无提示
在进行打印时可能出现网页右边不能显示,好像被剪掉一样,这样网页内容显示不全,如果在你的网页中一行上出现了很多个文本输入框,而又没有设置这些文本框的宽度,那么可能出现右边显示不到,好像背剪似地,这时你可以文本框的样式做适当缩小,如果你是放在表格中,那么只需要缩小表格的宽度,然后再把文本的宽度样式设置为:style="width:100%"即可。
页眉页脚的问题:
用到active控件:
var HKEY_Root,HKEY_Path,HKEY_Key;
HKEY_Root="HKEY_CURRENT_USER";
HKEY_Path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
//设置网页打印的页眉页脚为空
function PageSetup_Null()
{
try
{
var Wsh=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
HKEY_Key="footer";
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
}
catch(e)
{}
}
//设置网页打印的页眉页脚为默认值
function PageSetup_Default()
{
try
{
var Wsh=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P");
HKEY_Key="footer";
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d");
}
catch(e)
{}
}
相应的js方法只要在打印前调用即可如:在onbeforeprint事件的处理器中调用PageSetup_Null(),然
后再onafterprint事件的处理器中调用PageSetup_Default()
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'print.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function btnPrintClick(){
window.print();
}
function preview()
{
bdhtml=window.document.body.innerHTML;
sprnstr="<!--startprint-->";
eprnstr="<!--endprint-->";
prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+17);
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
window.document.body.innerHTML=prnhtml;
window.print();
}
</script>
</script>
</head>
<body>
This is my JSP page. <br>
This is my JSP page. <br>
This is my JSP page. <br>
<!--startprint-->
hello<br/>
world<br/>
<!--endprint-->
This is my JSP page. <br>
This is my JSP page. <br>
This is my JSP page. <br>
This is my JSP page. <br>
<input id="btnPrint" value="打印整页" type="button"
<input id="btnPrint" value="打印页面的部分内容" type="button"
</body>
</html>