JS 调用浏览器的打印功能(一)

方法一:

    首先想问的是java打印机制?有这东东吗?
    直接把这个(window.print();)复制到js中,就能打印出当前页面中的内容。

[javascript]  view plain copy
  1. function btnPrintClick(){  
  2.         window.print();  
  3.     }  
  4.     </script>  

 

 

[java]  view plain copy
  1. <input id="btnPrint" value="打印" type="button" onclick="btnPrintClick()";/>  

 

方法二:

 

[javascript]  view plain copy
  1. function preview()    
  2.      {    
  3.         bdhtml=window.document.body.innerHTML;    
  4.         sprnstr="<!--startprint-->";    
  5.         eprnstr="<!--endprint-->";    
  6.         prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+17);    <!-- 这个17 应该是因为 <!--startprint--> 有 17个字母 -->
  7.         prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));    
  8.         window.document.body.innerHTML=prnhtml;    
  9.         window.print();    
  10. }  
  11. </script>  

 


然后将要打印的部分用<!--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>

 

 

你可能感兴趣的:(js,浏览器打印功能,java打印机制)