Web打印的实现方法

article/2025/9/14 10:55:02

目前,在做B/S结构程序开发的时候,最棘手和最令人头疼的问题之一就是Web打印。往往打印出来的效果和自己预期的效果相差甚远,那么怎样才能打印出自己想要的效果呢?本文阐述的方法将解决这一问题,从而使得Web打印变得简单易用。

我们知道要实现Web方式的打印不外乎三种方法:第一就是利用大家都熟悉的Office工具来实现Web打印,如利用Word或Excel的打印工具来实现Web打印,该方法的难点是怎样把数据从网页中导入Word或Excel中;第二就是利用IE浏览器自带的打印控件来实现Web打印,该方法的难点是怎样在程序中控制浏览器打印控件中的各项设置;第三就是利用第三方的控件或报表软件来实现Web打印,该方法的难点在于大多数的报表软件都是有偿使用的,因此不得不从经济的角度来考虑了。对于第三种方法,这一类的控件有FileSystemObject组件、ScriptX.cab控件等,这一类的报表软件有如意报表、用友公司的Cell插件、《靓妹》全动态Web报表等。这里对它们的用法就不作说明了,只要参照其提供的说明书就能够驾驭它们。以下笔者将重点讲述前两种方法。

利用Office工具实现打印

首先介绍第一种方法,即利用Office打印工具实现Web打印。前面我们提到了该方法的难点在于把数据导入Word或Excel中,下面笔者以Excel为例介绍一下把数据导入Excel的方法。其实将网页中的数据导入Excel中的方法有很多种,这里只介绍其中的一种,即利用ActiveX控件——Excel.Application。Excel.Application是微软为Excel提供的编程接口,在其他的编程语言中可以通过该接口程序来操作Excel表格。以下介绍一下在程序中操作EXCEL表的常用命令(以脚本语言VBScript为例,其他语言类似):

1.Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象

2.Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的Excel工件簿

3.Set xlBook = xlApp.Workbooks.Add() '创建新的Excel工件簿

4.xlApp.Visible = True '设置EXCEL对象可见(或不可见)

5.Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表

6.Set xlSheet = xlBook.ActiveSheet '设置活动工作表(默认表名)

7.xlSheet.Cells(row, col) =值 '给单元格(row,col)赋值

8.xlSheet.PrintOut '打印工作表

9.xlBook.Close(True) '关闭工作簿

10.xlApp.Quit '结束EXCEL对象

11.Set xlApp = Nothing '释放xlApp对象

这里通过一个简单的例子来说明这些命令的用法。下面给出它关键的实现代码(用javascript脚本实现,用VBScript也能实现,有兴趣的读者可以自己实现一下):

< script language="javascript">

function xlPrint(){

var xlApp;//存放Excel对象

var xlBook;//存放Excel工件簿文件

var xlSheet;//存放Excel活动工作表

try{

xlApp = new ActiveXObject("Excel. Application");//创建Excel对象}

catch(e){

alert("请启用ActiveX控件设置!");

return;}

xlBook = xlApp.Workbooks.Add();//创建Excel工作簿文件

xlSheet = xlBook.ActiveSheet;//激活Excel工作表

var rowLen = printData.rows.length;//table对象的行数

for (var i=0;i< rowLen;i++){

var colLen = printData.rows(i).cells.length;//table对象的列数

for (var j=0;j< colLen;j++)//为Excel表的单元格赋值

xlSheet.Cells(i+1,j+1).value = printData.rows(i).cells(j).innerText;}

xlApp.Visible = true;//设置Excel对象可见}

< /script>

代码说明:只要程序中table的ID设置为:printData,然后再把打印按钮的onclick事件响应函数设置为xlPrint()就可以了;但是运行该程序的前提就是IE要允许对没有标记为安全的ActiveX控件进行初始化和脚本运行。具体的设置方法如下:打开控制面板→Internet选项→安全性→自定义级别→对没有标记为安全的ActiveX控件进行初始化和脚本运行→选中启用,这样我们的程序就可以运行了。如果没有启用该ActiveX控件设置,那么程序在执行创建Excel对象时会抛出一个异常,这时可以通过catch()语句来捕获这个异常,并且做出相应的处理。如果想直接打印可以调用命令:xlSheet.PrintOut。

以上的方法实现了将数据从网页的单元格到Excel单元格的导入,下面笔者介绍一种将整个表格导入Excel的方法。该方法的主要思路是利用剪切板,先将网页中要打印的内容复制到剪切板中,然后再调用xlSheet.Paste()命令将剪切板中的内容复制到Excel中。下面来看一下它的关键代码:

var selectArea=document.body.createTextRange(); //创建文本区域

selectArea.moveToElementText(printData);//将文本区域聚焦到printData

selectArea.select();//选中printData

selectArea.execCommand("Copy");//将printData复制到剪切板中

xlSheet.Paste();//将剪切板中的数据复制到Excel中

利用IE浏览器实现

前面我们以Excel为例讲述了利用Office打印工具来完成Web打印,现在我们来看看怎样利用IE浏览器自带的打印控件来完成Web打印。大家都知道IE本身就具有强大的打印功能,那么我们为什么不利用这一点来实现Web打印功能呢。原因是如果我们直接使用IE的打印功能或是在程序中调用window.print()来打印网页,那么在页眉部分会出现网页标题和页码信息,而在页脚部分则会出现网址和日期信息。其实这些信息并不是我们想要打印的,那么怎样才能去掉这些信息呢?做法其实很简单,我们只要在IE的文件菜单中打开页面设置对话框,然后去掉页眉和页脚的代码(页眉:&w&b页码,&p/&P 页脚:&u&b&d)就可以了,现在我们再打印的话这些信息就不会出现了。现在我们来看看这些代码是什么意思呢?其实这些代码是IE提供给我们设置打印页面的,下面给出它们的具体含义,如表所示。

通过上面的表格,读者应该明白IE打印设置中默认的页眉和页脚的含义,而且读者可以对上述代码进行组合使用来设置自己喜欢的打印设置。这里我们所要说的并不单单是这些,大家设想一下我们开发了一个基于B/S结构的系统,其中有报表的部分,我们不能让每个客户端都自己去设置IE的打印设置,因此我们需要在程序中控制这些设置。下面我们用VBScript脚本写一个函数通过修改注册表键值来达到控制页面设置的目的,代码如下:

< script language="VBScript">

dim path, reg

'path存放IE打印设置的注册表地址, reg存放WScript.Shell组件的对象

path = "HKEY_CURRENT_USER/Software/Micro-soft/Internet Explorer/PageSetup"

'通过注册表修改打印设置,只修改页眉、页脚和各边界的值

'参数说明:header--页眉,footer--页脚,margin_left--左边界

'margin_top--上边界,margin_right--右边界,margin_bottom--下边界

'页边距的设置中 1对应25.4mm,即margin_left=1表示实际值的25.4mm

function pagesetup(header, footer, margin_left, margin_top, margin_right, margin_bottom)

On Error Resume Next

Set reg = CreateObject("WScript.Shell")

if err.Number>0 then

MsgBox "不能创建WScript.Shell对象!"

exit function

end if

reg.RegWrite path+"/header", header'设置页眉

reg.RegWrite path+"/footer", footer '设置页脚

reg.RegWrite path+"/margin_left", margin_left'设置左边界

reg.RegWrite path+"/margin_top", margin_top'设置上边界

reg.RegWrite path+"/margin_right", margin_right'设置右边界

reg.RegWrite path+"/margin_bottom", margin_bottom'设置下边界

end function

< /script>

程序中可以再写一个函数(可用VBscript或javascript脚本写)先调用该函数,然后再调用window.print()实现打印,这里就不给出代码了。细心的读者一定发现了这样打印出来的页面会有打印按钮在上面,而且分页是IE打印控件根据纸张大小分出来的,下面我们介绍一种方法来控制分页和打印按钮的显示。该方法是利用CSS样式表来控制这些设置,因为在样式表中有一个“media=print”属性,该属性只有在打印的时候才会起作用,因此可以实现对打印按钮和分页的控制,具体做法如下:

< style media=print>

.noprint{display:none;}

.pagenext{page-break-after: always;}

< /style>

只要在打印按钮中加入代码class="noprint",而在需要分页的地方加入代码< div class="pagenext">< /div>就可以了。到目前为止我们的打印功能已经比较完善了,但是还没有打印预览和直接打印的功能,一般用户在打印之前都会预览一下,如果没有问题就直接打印了。下面我们通过IEWebBrowser组件来实现这两个功能。

首先创建IEWebBrowser对象:

< object id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 width=0 height=0>< /object >

然后通过不同参数调用ExecWB方法实现打印预览和直接打印功能:

WebBrowser.ExecWB(6,1); //打印

WebBrowser.ExecWB(6,6); //直接打印

WebBrowser.ExecWB(7,1); //打印预览

ExecWB方法还有很多其他的参数,这里就不一一介绍了。 


http://chatgpt.dhexx.cn/article/OayCMtJp.shtml

相关文章

简单实用的web打印方案-网页精准打印

在当前这个互联网时代&#xff0c;大部分企业都搭建了自已的平台&#xff0c;通过平台联系客户&#xff0c;与粉丝互动&#xff0c;展示自己的产品。PC网站、APP、手机站、这些平台是企业互联网生态系统的重要基础。在公司平台化、系统化的今天&#xff0c;工作中出现web打印的…

JPrint web打印编辑器及web在线打印,JS打印编辑器

效果图 背景&#xff1a; 电子商务的发展火了一大批网商&#xff0c;每日近2000W的订单需要处理&#xff0c;相应的每天有2000W的订单需要打印。在淘宝卖家服务市场里有很多快递单发货单打印工具&#xff0c;他们使用的是阿里提供的菜鸟打印&#xff08;active&#xff09;组件…

前端web打印

前端打印 一、Vue打印插件 第一种方法&#xff1a;通过npm 安装插件 1&#xff0c;安装 npm install vue-print-nb --save 2&#xff0c;引入 安装好以后在main.js文件中引入 import Print from vue-print-nbVue.use(Print); //注册   3&#xff0c;现在就可以使用了 &…

Web Print打印服务

Web Print打印服务 题目一、安装打印服务二、配置相关的打印机三.配置证书并添加到打印机里1.RouterSrv2.IspSrv提示:若需要单独全套笔记可私信我咨询 题目 Web Print 添加一台虚拟打印机,名称为“CS-Print”,发布到AD域。 客户端们都能够通过访问“https://print.worldski…

JS web打印

11.1 Web打印 Web打印是一种常用的打印方式&#xff0c;其使用方法简单、方便、快捷&#xff0c;在浏览网页的同时就可以实现打印的功能。 实例291 调用IE自身的打印功能实现打印 实例说明 通过JavaScript调用IE自身的打印功能实现打印&#xff0c;这种方法比较简单&#xff…

web打印的最佳方案

web打印的最佳方案 web打印的痛点新的解决方案方案web页面实现源代码&#xff0c;源码打印伺服器demo及原理 web打印的痛点 winform打印的方案比较多&#xff0c;实现也比较容易&#xff0c;而且效果也非常炫&#xff1b;但现在越来越多的系统是web系统&#xff0c;甚至是移动…

前端网页打印window.print()

前言 print作为浏览已经比较成熟的技术可以经常被用来打印页面的部分内容&#xff0c;我们可以在MDN上查看到相关的简单介绍。 一、print()方法 print() 方法用于打印当前窗口的内容。调用 print() 方法会产生一个打印预览弹框&#xff0c;让用户可以设置打印请求。最简单的打…

web打印的几种方案

轉自&#xff1a;http://elf8848.iteye.com/blog/626790 -------------------------------------------一 基于Web的打印方案比较分析--------------------------------   基于web的套打&#xff0c;难度在于要将浏览器中呈现的html&#xff0c;精确地打印到票据中&#xf…

HttpPrinter实现web打印功能

HttpPrinter实现web打印功能 WEB套打可选方案不多&#xff0c;理想的更少&#xff0c;利用免费控件HttpPrinterJavaScript实现精确套打&#xff0c;算是较为经典的选择。这种方案其实比较简单&#xff0c;利用一个htm文件就可以实现模板设计过程&#xff0c;几乎是“空手套”式…

web打印实现几种方法

在工作中出现web打印的情况是非常多的&#xff0c;其实这也是一个比较烦人的问题&#xff0c;这篇博客整理一下关于Web打印的一些方法或者方式。 1. window.print() 这个方法是用来打印网页的&#xff0c;页面上的其他的元素也会被打印处理&#xff0c;在打印的时候页眉页脚是…

Web打印

布鲁斯李 Web打印 随着10i新版本的发布&#xff0c;在10i的iserver中&#xff0c;内置了一个web打印服务。是指将您在 Web 应用中制作的 Web 内容输出为可打印的文档。那么如何使用该服务&#xff0c;请继续往下看&#xff1a; 执行一次成功的web打印任务&#xff0c;我们需要…

实现WEB打印的几种方法

当前WEB应用开发非常流行&#xff0c;主要原因是WEB应用客户端的规则很简单&#xff0c;容易学习&#xff0c;容易维护&#xff0c;容易发布&#xff0c;降低了开发难度。但是&#xff0c;WEB应用的打印一直以来却是一个难题&#xff0c;特别是在应用中完成标签打印&#xff08…

web打印三种实现方式

web打印的方式可分为三种&#xff1a; 直接调用浏览器打印通过javascript插件调用浏览器打印通过第三方程序直接调用打印机 一、直接调用浏览器打印 通过在javascript代码中调用window.print()函数实现&#xff0c;浏览器会自动获取当前页面内容&#xff0c;并打开浏览器的打…

html纵向广告滚动条,网页右侧的漂浮广告代码,随滚动条滚动

HTML代码(即需要漂浮的广告)&#xff1a; js代码&#xff1a;前提是必须要引入jquery文件 $(function(){ $(window).scroll(function(){ var scrollTop document.body.scrollTop || document.documentElement.scrollTop || 0; $(".christmas_ad").stop(); var scrol…

php浮动广告,JavaScript实现漂浮广告代码的实例总结

我们在打开网页的时候&#xff0c;我们会发现不管是什么网页都会有很多漂浮的广告&#xff0c;有很多人都会在想&#xff0c;这样的效果是怎么实现的呢&#xff1f;今天我们就带大家详细介绍下JavaScript实现漂浮广告代码的实例总结&#xff01; 第一种 漂浮广告 不符合W3C Jav…

html左侧浮动广告代码,如何制作浮动广告 JavaScript制作浮动广告代码

如果有一定的JavaScript基础&#xff0c;制作浮动广告还是比较容易的。直接上代码了&#xff1a;无标题文档 *{ margin:0; padding:0; } #csdn { width:800px; margin:0 auto; } #ad { position:absolute; right:0px; top:30px; z-index:1; } #cl { position:absolute; right:0…

php 漂浮广告代码,JavaScript实现带缓冲效果的随屏滚动漂浮广告代码

本文实例讲述了JavaScript实现带缓冲效果的随屏滚动漂浮广告代码。分享给大家供大家参考&#xff0c;具体如下&#xff1a; 这里演示了始终随屏滚动的JavaScript代码&#xff0c;在国内的应用泛滥成灾了&#xff0c;特别是一些喜欢漂浮广告的站长&#xff0c;常把本代码用作了漂…

html左侧浮动广告代码,纯js网页浮动广告代码

网上一般的网页浮动广告代码都是基于jquery的&#xff0c;受jiquery版本及浏览器限制&#xff0c;非常容易出现不兼容的情况&#xff0c;本站分享一段纯js网页浮动广告代码&#xff0c;简单兼容。 html代码&#xff1a; javascript代码&#xff1a; window.οnlοadfunction(){…

HTML将广告关闭的JS代码,带关闭漂浮广告代码_漂浮广告js代码_漂浮窗口模式关闭...

带关闭漂浮广告代码带关闭漂浮广告代码带关闭按钮地网页漂浮广告代码 x ff.js代码 var xpos = 20; var ypos = document.body.clientheight; var step = 1; var delay = 30; var height = 0; var hoffset = 0; var woffset = 0; var yon = 0; var xon = 0; var pause = true; v…

漂浮广告代码

<!doctype html> <html> <head> <meta charset"utf-8"> <title>漂浮广告代码</title> <script src"http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> &…