自己开发基于Web的打印控件,真正免费不是共享

 

1.1.0.121 版的控件,更新如下

   SetPrintBackground 已被取消

         SetMediaHeader        去掉了两个参数,见被划掉的文字部分

 

      在做项目中发现要用到Web方面的打印,于是从网上搜索了一些相关的web打印控件,有scriptx,jatoolsPrinter等,不过都不是免费的,想想还是自己做的好,毕竟这不是太难的事情。

 

下载地址:

 http://download.csdn.net/source/1625752(不要在这下)

 

注意:由于csdn上传的资源我自己无法删除,导致后续的控件更新无法及时更新,大家不要去csdn的下载频道下载了,已经有新的版本下载,这次是全开发,真正免费的。以下是链接

如果之前装有旧版的控件,请先卸载再安装新版控件。

 

用的话可以先装个虚拟打印机smartprint或其它的虚拟打印机

 

最新下载,以后的更新都在这了,csdn下载资源的停止更新

 

 

最新版下载地址,最新版本ver 1.1.0.121

 

http://www.vdisk.cn/down/index/4478770A2930


如果不能自动安装,请在ie->internet安全设置里设置"下载未签名的activex控件",选择"提示",如图

 

vWebPrint功能简单介绍如下

 

控件主要的特点是支持打印方案的保存和读取,批量url直接打印,所有方法属性可以混合组合使用,报表的设计就交给使用者自己了,网上关于css控制的资料不少,在这里我要说下如何设定每页打印固定的表头和表尾。

 

<TABLE width="100%" border="0">
<THEAD style="display:table-header-group;font-weight:bold">  
<TR><TD colspan="5"  align="center" >这是每页必打的表头</TD>  
  </TR>  
  <TR>  
      <TD>ID</TD>  
      <TD>学校</TD>  
      <TD>地址</TD>  
      <TD>创建时间</TD>  
      <TD>操作</TD>  
    </TR>  
</THEAD>  

   <TR>  
    <TD>23111</TD>  
    <TD>南宁二中</TD>  
    <TD>新民路</TD>  
    <TD>2009-8-8</TD>  
    <TD>编辑</TD>  
   </TR>

   <TR>  
    <TD>23111</TD>  
    <TD>南宁二中</TD>  
    <TD>新民路</TD>  
    <TD>2009-8-8</TD>  
    <TD>编辑</TD>  
   </TR>

<TFOOT style="display:table-footer-group;font-weight:bold">  
<TR>  
<TD colspan="5"  align="left" >这里是每页必打的表尾</TD>  
</TR>  
</TFOOT>

</TABLE>

 

红色是固定表头,兰色是固定表尾。
有什么BUG及建议请留言。

vWebPrint控件使用手册 ver1.0.0
一 控件安装:  vWebPrint是Activex控件, 服务端无运行环境要求,客户端运行环境要求浏览器最好是IE内核的。
  由于采用了安全方式编码,IE的高级选项->安全标签中所有的安全级别设置不用变更,使用原来默认即可。
 

  第一次浏览打印页面时,浏览器会提示
  
  点击“运行”即可安装完成。
二 使用示例:
  其他种类的Web打印控件大多都有一个共同问题,就是如果有十张要打印的表单,就得做十个不同的打印页面,如果是30张呢,劳动强度还是蛮大。
  本控件集成在Web页面中,通过指定要打印的URL进行打印,因此避免了其他web打印控件的所存在的共同问题,即打印页面只用写一个,URL可以作为参数进行传递到打印页面。。
  同时用户可以保存多个打印方案,用户可以随意加载指定的打印方案,而不用每次打印时重新设定。
  批量URL打印,用于大量数据打印,比如要打印1000页,可以分解成
  http://www.test.com/print_action.do?start_num=1&end_num=100,
  http://www.test.com/print_action.do?start_num=101&end_num=200 .......等。
  支持HTML格式的页眉(需要使用者指定每页打印数据的ID命名规范)等特性,下面是一些常用例子。
 
 
最简单打印 > 直接打印印

<HTML>
<script>
window.onresize = function(){
webPrn.ResizeWindow(document.body.clientWidth,document.body.clientHeight);
}
function init(){
webPrn.LoadUrl = "http://www.google.com";
webPrn.OpenUrl();
webPrn.PrintWebPage();
webPrn.ResizeWindow(document.body.clientWidth,document.body.clientHeight);
}
</script>
<BODY topmargin="0" leftmargin="0" οnlοad="init();">
<OBJECT id="webPrn" width="100%" height="100%" classid="clsid:C204BA3C-EBEA-454B-BD4E-4F6A73E79CFD" CODEBASE="vWebPrint.CAB#version=1,1,0,31">
<param name="lUser" value="李四"></param>
<param name="lUserNumer" value="30"></param>
<param name="lUserEndDate" value="2008-02-09"></param>
<param name="showToolbar" value="true"></param>
<param name="userId" value="登陆用户的id"></param>
</OBJECT>
</BODY>
</HTML>
 

设置打印参数打印 > 直接打印

<HTML>
<script>
window.onresize = function(){
webPrn.ResizeWindow(document.body.clientWidth,document.body.clientHeight);
}}
function init(){
webPrn.LoadUrl = "http://www.google.com";
webPrn.OpenUrl();
webPrn.SetTopMargin("1.0"); //设置顶边距1.0cm
webPrn.SetOrientation(2);   //设置横向打印 1,纵向,2,横向向
//.....等等
webPrn.PrintWebPage();
webPrn.ResizeWindow(document.body.clientWidth,document.body.clientHeight);
}}
</script>
<BODY topmargin="0" leftmargin="0" οnlοad="init();">
<OBJECT id="webPrn" width="100%" height="100%" classid="clsid:C204BA3C-EBEA-454B-BD4E-4F6A73E79CFD" CODEBASE="vWebPrint.CAB#version=1,1,0,31">
<param name="lUser" value="李四"></param>
<param name="lUserNumer" value="30"></param>
<param name="lUserEndDate" value="2008-02-09"></param>
<param name="showToolbar" value="true"></param>
<param name="userId" value="登陆用户的id"></param>

</OBJECT>
</BODY>
</HTML>
批量页面直接打印

<HTML>
<script>
window.onresize = function(){
webPrn.ResizeWindow(document.body.clientWidth,document.body.clientHeight);
}
function init(){
//....可以设置打印机参数
webPrn.LoadBatchUrl = "http://www.baidu.com,http://www.google.com";  //多个url用逗号分开
webPrn.PrintBatchWebPage();
}
</script>
<BODY topmargin="0" leftmargin="0" οnlοad="init();">
<OBJECT id="webPrn" width="100%" height="100%" classid="clsid:C204BA3C-EBEA-454B-BD4E-4F6A73E79CFD" CODEBASE="vWebPrint.CAB#version=1,1,0,31">>
<param name="lUser" value="李四"></param>
<param name="lUserNumer" value="30"></param>
<param name="lUserEndDate" value="2008-02-09"></param>
<param name="showToolbar" value="true"></param>
<param name="userId" value="登陆用户的id"></param>

</OBJECT>
</BODY>
</HTML>
指定要打印的页面对象(只能是Table或Div)

<HTML>
<script>
window.onresize = function(){
webPrn.ResizeWindow(document.body.clientWidth,document.body.clientHeight);
}}
function init(){
//....可以设置打印机参数
webPrn.LoadUrl = "c://TestPrintObjects.html";
webPrn.OpenUrl();
webPrn.SetPrintObjects("yesPrint1,yesPrint2");  //指定要打印的对象,id为yesPrint1和yesPrint2的表格或层,将被打印
//....可以直接打印印
}
</script>
<BODY topmargin="0" leftmargin="0" οnlοad="init();">
<OBJECT id="webPrn" width="100%" height="100%" classid="clsid:C204BA3C-EBEA-454B-BD4E-4F6A73E79CFD" CODEBASE="vWebPrint.CAB#version=1,1,0,31">
<param name="lUser" value="李四"></param>
<param name="lUserNumer" value="30"></param>
<param name="lUserEndDate" value="2008-02-09"></param>
<param name="showToolbar" value="true"></param>
<param name="userId" value="登陆用户的id"></param>

</OBJECT>
</BODY>
</HTML>
指定是否打印底图(一般套打用)

<HTML>
<script>
window.onresize = function(){
webPrn.ResizeWindow(document.body.clientWidth,document.body.clientHeight);
}}
function init(){
//....可以设置打印机参数
webPrn.LoadUrl = "c://TestPrintObjects.html";
webPrn.OpenUrl();
webPrn.SetPrintObjects("yesPrint1,yesPrint2",0,0,"yesBodyObj");  //第三个参数0指定只能在预览时看到底图,打印时无底图,如果值为1,则在预览时无底图,打印时有底图,第四个参数指定底图的id名称
//....可以直接打印印
}
</script>
<BODY topmargin="0" leftmargin="0" οnlοad="init();">
<OBJECT id="webPrn" width="100%" height="100%" classid="clsid:C204BA3C-EBEA-454B-BD4E-4F6A73E79CFD" CODEBASE="vWebPrint.CAB#version=1,1,0,31">
<param name="lUser" value="李四"></param>
<param name="lUserNumer" value="30"></param>
<param name="lUserEndDate" value="2008-02-09"></param>
<param name="showToolbar" value="true"></param>
<param name="userId" value="登陆用户的id"></param>
</OBJECT>
</BODY>
</HTML>
 
 
三 使用参考:
程序员开发参考。

页面控件声明:
<OBJECT id="webPrn" width="100%" height="100%" classid="clsid:C204BA3C-EBEA-454B-BD4E-4F6A73E79CFD" CODEBASE="vWebPrint.CAB#version=1,1,0,31">
<param name="lUser" value="注册人名称"></param>
<param name="lUserNumer" value="授权数,未用"></param>
<param name="lUserEndDate" value="授权结束日期,未用"></param>
<param name="showToolbar" value="是否显示工具条,true或false"></param>
<param name="userId" value="当前登陆者的ID,由业务系统指定"></param>
</OBJECT>

userId可以以以下方式加载,示例
<param name="userId" value="<%=userbean.getId()%>"></param>
以下例子,将以对象webPrn作为示例。
 
属性:

名称

描述

Js脚本设置例子

备注

 LoadUrl指定要打开的Url链接。webPrn.LoadUrl = "http://www.google.com"; 
 ShowToolbar指定是否显示工具条,设置值为true或false。webPrn.ShowToolbar = true; 
 LoadBatchUrl指定要打批量打印的页面,多个页面要以逗号分隔。webPrn.LoadBatchUrl = "http://www.baidu.com,http://www.google.com" 

方法:

名称参数描述Js脚本设置例子

备注

 OpenDocumentHTMLpHTML,
cssFilePath,
jsFilePath
打印指定的HTML代码
cssFilePath 指定要加载的css文件,要全路径 如
http://192.168.0.22:8088/abc/style.css
jsFilePath 指定要加载的js文件,同上要全路径

因为这个方法只是对指定的页面打印innerHTML,一般没有附带css样式,所以增加css文件加载的参数。

 

webPrn.OpenDocumentHTML(document.body.innerHTML);提供了更为灵活的打印方式,可以打印页面任意对象的HTML源。

打印HTML源的另一种方式,不得与LoadUrl混用,LoadUrl属性不要设置,OpenUrl方法不要执行。

SetTopMarginpTop指定纸张上边距,单位cmwebPrn.SetTopMargin("1.0"); 
 SetLeftMarginpLeft指定纸张左边距,单位cmwebPrn.SetLeftMargin("1.0"); 
 SetRightMarginpRight指定纸张右边距,单位cmwebPrn.SetRightMargin("1.0"); 
 SetBottomMarginpBottom指定纸张下边距,单位cmwebPrn.SetBottomMargin("1.0") 
 SetOrientationpOrientation指定打印方向,1纵向,2横向webPrn.SetOrientation(1); 
 SetPaperSizepPaperSize,
[pW],
[pH]
指定纸张类型

当pPaperSize=256时,表明是自定义纸张,需要同时指定pW(纸张宽度cm),pH(纸张高度cm),如果不指定,自定义纸张的宽度默认为22cm,高度14cm。

当pPaperSize<>256时,表明是系统保留纸张,不用指定pW和pH参数。
pPaperSize的值如[附表一]。
webPrn.SetPaperSize(9);  //9是A4

webPrn.SetPaperSize(256,15,18); //自定义纸张,宽15cm,高18cm,一般用于套张纸张定义
 
 SetCopiespCopies指定打印份数。webPrn.SetCopies(3);  //打印三份 
 SetPaperInfo使所有的打印机设置生效,只有执行本方法,打印机的设置才会生效。webPrn.SetPaperInfo();   
 SetHeaderpHeaderText指定打印页眉,见[附表二]webPrn.SetHeader("我的页眉");   //设置打印页眉 
 SetFooterpFooterText指定打印页脚,见[附表二]webPrn.SetFooter("我的页脚");   //设置打印页脚 
 ResetDefaultPaperInfo恢复打印机设定,A4纸,纵向,系统默认页眉页脚,份数1张,但不恢复上下左右边距webPrn.ResetDefaultPaperInfo(); 
 OpenUrl在设定了LoadUrl属性后,执行本方法,打开一个待打印的页面webPrn.OpenUrl(); 
 SetMediaHeaderpHeaderText,
pHeaderAlign,
pPageId,
pPageType,
pHeaderHeight
指定带格式的页眉

pHeaderText,页眉文本

pHeaderAlign,页眉位置(left,center,right)

pPageId,打印页中,每页的ID命名规则,如
         <div id='page_0'>第一页...</div><p 分页>
         <div id='page_1'>第二页...</div><p 分页>
         ....
这里,pPageId="page",支持模糊匹配,最好命名特别一点,以和其他对象有所区分。

pPageType,打印页中,每页数据的容器对象类型,只能为"TABLE"或"DIV"
本例的 pPageType = "DIV";

pHeaderHeight,页眉的高度,单位px(像素)        

webPrn.SetMediaHeader("<font color=red>红色页眉</font>","left","page","DIV","28px");

 

webPrn.SetMediaHeader("<font color=red>红色页眉</font>","left","28px");

 
 SaveUserPrinterSertupschemeName
返回true或false
以schemeName为名称保存当前用户的打印方案
webPrn.SaveUserPrinterSertup("增值票打印方案A3");

webPrn.SaveUserPrinterSertup("一般票打印方案A5");
 
 
 LoadUserPrinterSetup[schemeName]
返回true或false
以schemeName为名称读取当前用户的打印方案
webPrn.LoadUserPrinterSetup("增值票打印方案A3");

webPrn.LoadUserPrinterSetup("一般票打印方案A5");

方案名称可以直接指定也可以由控件界面选择
 
 PrintBatchWebPage在设定了LoadBatchUrl属行后,执行本方法,批量直接打印N个待打印的页面。webPrn.PrintBatchWebPage(); 
 PrintWebPage直接打印当前页面webPrn.PrintWebPage(); 
 PrintSetupWebPage打印前进行打印机设置,当然可以取消打印webPrn.PrintSetupWebPage(); 
 PrintView打印预览webPrn.PrintView(); 
 PrintSetup打印设置webPrn.PrintSetup(); 
 PrintStatus检测打印机是否安装webPrn.PrintStatus(); 
 SetPrintObjectspObjs,
[pQueryType],
指定打印的页面对象,只影响TABLE和DIV两种对象

pObjs,要打印对象的ID命名,多个对象用逗号分隔
pQueryType,对象查找方式,0模糊匹配,1精确匹配
 
webPrn.SetPrintObjects("page_0,page_2",1);
//精确匹配,只打印第一页和第三页的table或Div对象

webPrn.SetPrintObjects("page,tab",0);
//模糊匹配,只打印ID名称含有page和tab的table或Div对象
 
 
 SetPrintBackgroundpBgobject,
[pShowType]
套打时,指定页面的底图对象
对象的对应属性要为 background="images/abc.jpg",不能为css样式类,可以设置在body

pBgobject,底图对象ID命名
pShowType,0预览时保留底图,打印时去掉底图
           1预览时去掉底图,打印时保留底图(要在IE设置打印时保留底图)
 
webPrn.SetPrintBackground("bodyObj",0); 
//底图容器对象ID为,bodyObj,预览时可见底图,打印时去掉底图

webPrn.SetPrintBackground("bodyObj",1);
//底图容器对象ID为,bodyObj,预览时可见底图,打印时去掉底图

如  <body id="bodyObj" background="abc.jpg">
  或
    <div id="bodyObj" background="abc.jpg">
  或
    <table id="bodyObj" background="abc.jpg">
 
 

附表一:

纸张类型定义,具体支持类型根据当时打印机。
注意 对象此属性的效果依赖于打印机厂家提供的驱动程序。某些属性设置值可能不起作用,或者一些不同的属性设置值可能有相同的效果。接受范围之外的设置值可能产生也可能不产生错误。详细信息,请参阅厂家具体驱动程序的文档
 1 信笺, 8 1/2 x 11 英寸。
2 +A611 小型信笺, 8 1/2 x 11 英寸。
3 小型报, 11 x 17 英寸。
4 分类帐, 17 x 11 英寸。
5 法律文件, 8 1/2 x 14 英寸。
6 声明书,5 1/2 x 8 1/2 英寸。
7 行政文件,7 1/2 x 10 1/2 英寸。
8 A3, 297 x 420 毫米
9 A4, 210 x 297 毫米
10 A4小号, 210 x 297 毫米
11 A5, 148 x 210 毫米
12 B4, 250 x 354 毫米
13 B5, 182 x 257 毫米
14 对开本, 8 1/2 x 13 英寸。
15 四开本, 215 x 275 毫米。
16 10 x 14 英寸。
17 11 x 17 英寸。
18 便条,8 1/2 x 11 英寸。
19 #9 信封, 3 7/8 x 8 7/8 英寸。
20 #10 信封, 4 1/8 x 9 1/2 英寸。
21 #11 信封, 4 1/2 x 10 3/8 英寸。
22 #12 信封, 4 1/2 x 11 英寸。
23 #14 信封, 5 x 11 1/2 英寸。
24 C 尺寸工作单
25 D 尺寸工作单
26 E 尺寸工作单
27 DL 型信封, 110 x 220 毫米
29 C3 型信封, 324 x 458 毫米
30 C4 型信封, 229 x 324 毫米
28 C5 型信封, 162 x 229 毫米
31 C6 型信封, 114 x 162 毫米
32 C65 型信封,114 x 229 毫米
33 B4 型信封, 250 x 353 毫米
34 B5 型信封,176 x 250 毫米
35 B6 型信封, 176 x 125 毫米
36 信封, 110 x 230 毫米
37 信封大王, 3 7/8 x 7 1/2 英寸。
38 信封, 3 5/8 x 6 1/2 英寸。
39 U.S. 标准复写簿, 14 7/8 x 11 英寸。
40 德国标准复写簿, 8 1/2 x 12 英寸。
41 德国法律复写簿, 8 1/2 x 13 英寸。
256 用户定义

附表二:

页眉页脚系统保留定义及说明
 &w 窗口标题
&u 网页地址 (URL)
&d 短日期格式(由“控制面板”中的“区域设置”指定)
&D 长日期格式(由“控制面板”中的“区域设置”指定)
&t 由“控制面板”中的“区域设置”指定的时间格式
&T 24 小时时间格式
&p 当前页号
&P 网页总数
&& 单个 & 号 (&)
&b 紧跟在这些字符之后的文本居中打印。
&b&b 紧跟在第一个 "&b" 之后的文本居中打印,跟在第二个 "&b" 之后的文本按右对齐方式打印。
说明:所有方法和属性都可以混合使用,可以直接打印Url,也可以通过控件打印,使用时注意先后顺序就可以了:1打开文档,2设置打印机参数,3使打印机设置生效,4设置其他页面属性,5打印
vWebPrint打印控件 Pengwei拥有版权,联系QQ:121310959

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
控件功能强大,却简单易用,所有调用如同JavaScript扩展语句, 主要接口函数如下: PRINT_INIT 打印初始化 SET_PRINT_PAGESIZE 设定纸张大小 ADD_PRINT_HTM 增加超文本项 ADD_PRINT_TEXT 增加纯文本项 ADD_PRINT_TABLE 增加表格项 ADD_PRINT_SHAPE 画图形 SET_PRINT_STYLE 设置对象风格 PREVIEW 打印预览 PRINT 直接打印 PRINT_SETUP 打印维护 PRINT_DESIGN 打印设计 ... 样例清单 1.如何在页面内嵌入控件见样例一 2.如何选材打印当前页面内容见样例二 3.如何用代码生成打印页见样例三 4.如何打印设计和定位套打见样例四 5.如何控制纸张大小和连续打印见样例五 6.如何输出多页长文档及双面打印见样例六 7.如何定向输出见样例七 8.如何打印图片见样例八 9.如何用程序加载打印维护背景图见样例九 10.如何控制打印样式(STYLE)见样例十 11.如何直接打印条形码见样例十一 12.如何读写本地文件见样例十二 13.如何打印旋转内容见样例十三 14.如何按URL打印见样例十四 15.如何打印表格的页头页尾见样例十五 16.如何设置预览窗口大小见样例十六 17.如何发打印机指令或直接读写端口见样例十七 18.如何打印幅面高度不固定的票据见样例十八 19.如何内嵌显示及预览时包含背景图见样例十九 20.如何强制分页并预览多页卡片见样例二十 21.如何控制打印维护的功能权限见样例二十一 22.如何构建自己的纯WEB打印预览见样例二十二 23.如何居中打印超文本见样例二十三 24.如何选择界面皮肤见样例二十四 25.如何指定输出到哪页或仅预览见样例二十五 26.如何提高多页打印的性能见样例二十六 27.如何导出数据到Excel文件见样例二十七 28.如何快速读取客户端系统信息见样例二十八 29.如何使用其它长度单位见样例二十九 30.如何分页输出页面内容见样例三十 31.如何打印表格的分页小计或合计见样例三十一 32.如何实现清晰的图表打印见样例三十二 33.如何实现甘特图等的图表打印见样例三十三 34.如何使用百分比%和满页打印见样例三十四 35.如何获得打印结果和程序代码见样例三十五 36.如何在设计过程中用js编辑内容见样例三十六 37.如何打印公章效果图见样例三十七 38.如何用BASE64编码输出图片见样例三十八 39.如何打印田字格、上划线等文本见样例三十九 40.如何进行数据格式转换见样例四十 41.如何把内容关联后按顺序打印见样例四十一 42.如何把整页内容缩放打印见样例四十二 43.如何分页打印综合表格见样例四十三 44.如何缩放打印单个超文本内容见样例四十四 45.如何获得打印状态及最终结果见样例四十五 46.如何设置右边距和下边距见样例四十六
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值