`

一个不错的WEB打印解决方案!

阅读更多

前段时间做项目时,因为需要用到WEB打印,原来是想用水晶报表的,但由于生成的数据比较麻烦(由多张表并且经过多次计算才生成),因此就想上网找一下有没更好更方便的办法。其实最好的办法就是可以直接打印当前页面需要的内容,这样就不用再去考虑数据源的问题了,所有操作都在客户端实现。

网上的方法一般都是使用样式控制页面所需打印部分,于都在同一页面内控制,所以这样打出来的效果也不好看,而且也不便于控制,于是我就想到将需要打印的内容直接传到另一个页面,然后再在那个页面里进行打印操作,因为是一个新的页面,所以可以很方便去控制需要的样式,只要将所有打印的连接都用此页面进行操作就可以了,这样打出来的效果就可以完全与页面内容一样(包括样式),当然,前提是必须在IE高级设置里将“打印背景图像”一选项打开,否则只能打印前景色。

此方法最终也是调用WebBrowser控件进行的,所以还必须要求客户端IE打开“对没有标记为安全的ActiveX控件进行初始化和脚本运行”的选项,这是使用此方法的唯一一个缺点!

具体实现:

1、此方法实现其实也非常简单,主要是要先定义好要打印的区域,可以使用一个DIV包含起来,如下:

 <!-- 设置打印区域,ID为Content1 -->
       
<div id="Content1">
            
<table width="647" height="74" border="0" cellpadding="1" bgcolor="#000000">
              
<tr>
                
<td height="18" bgcolor="#0099FF"><div align="center"><span class="STYLE1">编号</span></div></td>
                
<td bgcolor="#0099FF"><div align="center"><span class="STYLE1">姓名</span></div></td>
                
<td bgcolor="#0099FF"><div align="center"><span class="STYLE1">年龄</span></div></td>
              
</tr>
              
<tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr>
              
<tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr> <tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr> <tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr> <tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr> <tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr> <tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr> <tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr> <tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr> <tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr> <tr>
                
<td height="22" bgcolor="#FFFFFF"><div align="center">1</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">ssd</div></td>
                
<td bgcolor="#FFFFFF"><div align="center">23</div></td>
              
</tr>
            
</table>
          
</div>


2、增加一个打印按钮:

 <input type="button" value=" 打 印 " onclick="OpenPrint();" id="Printf" />


3、增加JS方法:(其实就打开另一个新的打印页面)

<script>
//打印方法,直接开另一新页面然后将当前页面打印区传过去
  function OpenPrint()
    
{
        window.open('Print.htm','print', 'toolbar
=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
    }

</script>


4、在新建一个Print.htm页面,获取父页面的内容,并且打印出来

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    
<title></title>
</head>
<!-- 要保留打印区域的样式,此页面的样式必需与父页面的一样 -->
<style type="text/css">
<!--
.STYLE1 
{color: #FFFFFF}
body,td,th 
{
    font-size
: 12px;
}

.STYLE4 
{color: #CC0000; font-weight: bold; }

-->
    
</style>
<script>
//初始化页面大小
window.resizeTo(window.screen.availWidth,window.screen.availHeight);
window.moveTo(
0,0);
</script>
<body style="background-color:White; background-image:url(nono.jpg); ">
    
    
<!--注册打印控件-->
    
<object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" width="0"></object>
    
    
<!--设置打印标题-->
    
<div id="title" class="STYLE4">
    
</div>
    
<br />
    
    
<!--设置打印的内容-->
    
<div id="print">
    
</div>

    
<script>
 
//从父页面获取内容
 var father = window.opener;
 
if(father != null)
 
{
    pagesetup_null();
    
//获取父页面的标题
    document.getElementById('title').innerHTML =  father.title.innerHTML;
    
//获取父页面需要打印的内容
    document.getElementById('print').innerHTML =  father.Content1.innerHTML;  
    print();
  }

 
  
function print()
  
{
    document.all.WebBrowser.ExecWB(
7,1);
    window.close();
  }


    
</script>

</body>
</html>


完成!

分享到:
评论

相关推荐

    webprint 一个全面强大的web打印的解决方案

    WebPrint是一个全面强大的web打印的解决方案。它可以直接在IE浏览器中可视化的设计各种复杂的打印模版, 轻松解决Web套打问题。也可以直接打印用ASP,JSP等动态程序生成的HTML页面。 WebPrint内含一个在vc7.0上开发...

    Web打印的解决方案之普通报表打印

    Web打印的解决方案主要关注如何在Web环境中有效地呈现和打印页面内容,尤其是对于普通报表的处理。...随着技术的发展,未来的Web打印解决方案可能会更加依赖于前端框架和库,以提供更强大、更一致的跨浏览器打印体验。

    JAVA的Web打印方式(PageOffice、POI、jacob,html打印等)

    JAVA的Web打印方式详解 JAVA的Web打印方式是指在Web应用程序中实现打印功能的各种方法和技术。本文将主要介绍使用PageOffice、POI、jacob、html打印等方式来实现Web打印。 一、使用浏览器自带的打印功能直接打印 ...

    WebStart解决方案

    【描述】WebStart技术是一种由Java提供的一种基于浏览器的Java应用程序部署解决方案。它允许用户通过点击网页上的一个链接来下载和运行Java应用程序,无需安装过程,实现了“即点即用”的理念。这项技术依赖于Java...

    非常不错的web打印程序(附示例程序)

    例如,`Lodop`,可能就是这个压缩包中`install_lodop.exe`安装的组件,它是一个流行的Web打印解决方案,支持多种浏览器和操作系统。 在提供的示例程序中,我们可以看到多个HTML文件,如`PrintSampIndex.html`、`...

    C#实现简单的Web打印控件

    总结,C#实现的Web打印控件通过利用System.Drawing命名空间提供的功能,能够在不依赖ActiveX控件的情况下,提供安全且高效地Web打印解决方案。通过理解和实践这样的技术,开发者可以为用户提供更加便利的Web应用体验...

    Delphi WEB打印服务【支持打印设计、打印预览、打印】

    这种服务的出现,使得开发者能够构建出跨平台的远程打印解决方案,极大地拓展了Delphi应用程序的功能。 在Delphi WEB打印服务中,打印设计是核心环节。它提供了丰富的API和控件,允许开发者在Web环境中创建和编辑...

    webprint web打印控件

    WebPrint4.0是由以前的... 合并后的WebPrint,是一个强大而全面的web打印解决方案,它可以直接在IE浏览器中可视化的设计各种复杂的打印模版, 轻松解决Web套打问题。也可以直接打印用ASP,JSP等动态程序生成的HTML页面。

    一个完全免费的WEB打印插件控件,支持:C#/vb.net/asp/PHP/JSP,也有实例

    "一个完全免费的WEB打印插件控件,支持:C#/vb.net/asp/PHP/JSP,也有实例" 提供了一个解决方案,允许开发者在各种Web应用平台上实现便捷的打印功能。 这个插件控件兼容多种编程语言,如C#、VB.NET、ASP、PHP和JSP,...

    ASP.NET中实现Web打印的方案

    这段代码定义了一个`clsPrint`类,继承自`System.Web.UI.Page`,用于处理Web打印的相关逻辑。其中包含了多个私有字段,如页面标题、列标题列表、页眉和页脚等信息。构造函数中还实现了对当前页面URL的初始化,以便...

    水晶报表ActiveX 打印(web打印)解决方法

    7. **替代方案**:如果以上方法都无法解决问题,可以考虑使用其他报表工具,如SQL Server Reporting Services (SSRS) 或Kendo UI等,它们提供了更现代的Web打印解决方案。 在处理这类问题时,日志记录和调试是至关...

    楚琳Web打印控件、源码、使用说明

    总的来说,楚琳Web打印控件是一款强大的网页打印解决方案,它提供了丰富的功能和高度的可定制性。无论你是希望快速集成打印功能,还是计划深度开发以满足特定需求,这款控件都值得你去研究和使用。通过深入理解和...

    【Delphi WEB打印服务】通过请求api,实现打印设计、打印预览、打印,即可做到本地和远程打印.zip

    综上所述,Delphi WEB打印服务是一个强大的工具,为C#开发者提供了便捷、灵活的打印解决方案,无论是在本地还是远程环境中,都能满足多样化的需求,实现高效、准确的打印任务。通过深入了解并充分利用其提供的API和...

    Delphi web打印源码 WEBPrinter For Delphi 10.3 Rio

    本文将深入探讨"WEBPrinter For Delphi 10.3 Rio"这一针对Delphi的Web打印解决方案,以及其组件和源码的使用。 WEBPrinter 是一个专门为 Delphi 设计的Web打印组件,它允许开发者在Web环境下实现高质量的打印功能,...

    Web打印设置总结

    本文将深入探讨Web打印设置的几种常见方法,包括直接页面设置打印、利用IEWebBrowser控件实现打印等,旨在为用户提供一个全面且实用的Web打印解决方案。 #### 直接页面设置打印 最直接的Web打印方法是通过浏览器...

    WEB 打印控件及实例

    "WEB 打印控件"是一种技术解决方案,它允许开发者添加到网页中,使得用户无需离开浏览器就能进行打印操作。这种控件通常是一个动态链接库(DLL)或者ActiveX组件,它可以被嵌入到HTML页面中,为用户提供友好的打印...

    web打印程序很好用

    Web打印是一种基于网络技术的打印解决方案,它允许用户通过网页浏览器或者其他Web应用程序来发送打印作业,无需安装特定的打印驱动程序。这种技术极大地简化了打印流程,尤其在多用户环境中,提高了工作效率并降低了...

    web打印,打印预览

    DLPrinter可能是一个特定的打印解决方案或者库,它可能提供了更高级的功能,如自定义打印样式,支持多页PDF输出,或者提供了一套API来控制打印过程。具体使用方法可能包含以下几个步骤: 1. 引入DLPrinter库:在HTML...

    通过Web打印超市一样的小票

    在IT行业中,Web打印是一种利用Web技术实现远程打印的功能,尤其适用于需要跨设备或远程操作的场景。在超市环境中,小票打印...开发者需要对这些领域都有一定的了解和实践经验,才能实现高效且可靠的Web打印解决方案。

    net web打印组件

    综上所述,"net web打印组件"是一个全面的解决方案,旨在简化Web环境下的打印工作,通过提供自定义格式和套打功能,提高了打印的灵活性和准确性。组件的各个组成部分协同工作,从打印逻辑处理、报表设计到错误处理和...

Global site tag (gtag.js) - Google Analytics