每日一得

不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速开发
最近关心的内容:SSH,seam,flex,敏捷,TDD
本站的官方站点是:颠覆软件

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  220 随笔 :: 9 文章 :: 421 评论 :: 0 Trackbacks
key words: IE打印 web打印 页面打印

最近又碰到了页面打印,顺便记录一下,本来下午写完了,可惜最近blogjava最近总是出现问题,提交居然失败,只好再来一次.

function SaveDataSourec(HeadName1, HeadName2, DivName) {
    
var Div1 = DivName.innerHTML;
    
var css = '<style type="text/css" media=all>+
              'p { line
-height: 120%}' +
              '.fhead {   font
-size: 9pt; text-decoration: none; color: 104A7B}' +
              '.ftitle { line
-height: 120%; font-size: 18px; color: #000000}' +
              'td { font
-size: 10px; color: #000000}' +
              '
</style>' ;

    
var body = '<table width="640" border="0" cellspacing="0" cellpadding="5">+
               ' 
<tr> ' +
               ' 
<td class="fbody">+
               ' 
<b><div align="center">+ '<font size="+1" class=fhead>+ HeadName1 + '</div>+ '</font></b>+
               ' 
<b><div align="center">+ '<font size="+1" class=fhead>+ HeadName2 + '</div>+ '</font></b>+
               ' 
</td>+
               ' 
</tr>+
               ' 
<tr> ' +
               ' 
<td class="fbody">+
               ' 
<div align="center" class=ftitle>+ Div1 + '</div>+
               ' 
</td>+
               ' 
</tr>+
               '
</table>';
    document.body.innerHTML 
= '<center>+ css + body + '<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT>+ '</center>';
}


function PrintDataSourec(HeadName1, DivName) {
    
var oldBody = document.body.innerHTML;
    
var Div1 = DivName.innerHTML;
    
var css = '<style type="text/css" media=all>+
              'p { line
-height: 120%}' +
              '.fhead {   font
-size: 40pt; text-decoration: none; color: 104A7B}' +
              '.ftitle { line
-height: 120%; font-size: 25px; color: #000000}' +
              'td { font
-size: 25px; color: #000000}' +
              '
</style>' ;

    
var body =
            '
<table width="100%" border="0" cellspacing="0" cellpadding="0">+
            ' 
<tr>+
            '   
<td height="40"></td>+
            ' 
</tr>+
            '
</table>+
            '
<table width="640" border="0" cellspacing="0" cellpadding="5">+
            ' 
<tr> ' +
            ' 
<td class="fbody">+
            ' 
<b><div align="center">+ '<font size="+3" class=fhead>+ HeadName1 + '</div>+ '</font></b>+
            ' 
</td>+
            ' 
</tr>+
            ' 
<tr> ' +
            ' 
<td class="fbody">+
            ' 
<div align="center" class=ftitle>+ Div1 + '</div>+
            ' 
</td>+
            ' 
</tr>+
            '
</table>+
            '
<table width="640" border="0" cellspacing="0" cellpadding="5">+
            ' 
<tr> ' +
            ' 
<td class="fbody">+
            ' 
</td>+
            ' 
</tr>+
            '
</table>';
    document.body.innerHTML 
= '<center>+ css + body + '<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT>+ '</center>';
    
try {
        wb.execwb(
66);
    }
    
catch(ex) {
        alert(
"请在IE里设置允许ActiveX");
    }
    document.body.innerHTML 
= oldBody;
}

function PrintDataSourecWithSetup(HeadName1, HeadName2, DivName) {
    
var oldBody = document.body.innerHTML;
    
var Div1 = DivName.innerHTML;
    
var css = '<style type="text/css" media=all>+
              'p { line
-height: 120%}' +
              '.fhead {   font
-size: 9pt; text-decoration: none; color: 104A7B}' +
              '.ftitle { line
-height: 120%; font-size: 18px; color: #000000}' +
              'td { font
-size: 10px; color: #000000}' +
              '
</style>' ;

    
var body = '<table width="640" border="0" cellspacing="0" cellpadding="5">+
               ' 
<tr> ' +
               ' 
<td class="fbody">+
               ' 
<b><div align="center">+ '<font size="+1" class=fhead>+ HeadName1 + '</div>+ '</font></b>+
               ' 
<b><div align="center">+ '<font size="+1" class=fhead>+ HeadName2 + '</div>+ '</font></b>+
               ' 
</td>+
               ' 
</tr>+
               ' 
<tr> ' +
               ' 
<td class="fbody">+
               ' 
<div align="center" class=ftitle>+ Div1 + '</div>+
               ' 
</td>+
               ' 
</tr>+
               '
</table>';
    document.body.innerHTML 
= '<center>+ css + body + '<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT>+ '</center>';
    wb.execwb(
66);
    document.body.innerHTML 
= oldBody;
}

function SetPrintSettings() {
    
// -- advanced features
    factory.printing.SetMarginMeasure(2// measure margins in inches
    factory.SetPageRange(false13// need pages from 1 to 3
    factory.printing.printer = "HP DeskJet 870C"
    factory.printing.copies 
= 2
    factory.printing.collate 
= true
    factory.printing.paperSize 
= "A4"
    factory.printing.paperSource 
= "Manual feed"

    
// -- basic features
    factory.printing.header = "This is MeadCo"
    factory.printing.footer 
= "Advanced Printing by ScriptX"
    factory.printing.portrait 
= false
    factory.printing.leftMargin 
= 1.0
    factory.printing.topMargin 
= 1.0
    factory.printing.rightMargin 
= 1.0
    factory.printing.bottomMargin 
= 1.0

}

//调用接口
function printit(HeadName1, DivName) {
    
if (confirm('是否确认打印?')) {
        PrintDataSourec(HeadName1, DivName);
        
return;
    }
}

//带配置的接口
function printitWithSetup(HeadName1, HeadName2, DivName) {
    
if (confirm('是否确认')) {
        PrintDataSourecWithSetup(HeadName1, HeadName2, DivName);
    }
}

//另存
function saveas(HeadName1, DivName) {
    SaveDataSourec(HeadName1, 
"", DivName);
    
//wb.execwb(4,1);
    top.frames("mainFrame").document.execCommand("saveAs");
    window.history.back(
0);
}


调用很简单,把要打印的部分直接放在 <div>里就可以了
<div id="myPrint">

    your content to print

</div>



把div传给printit就可以了

由于本质上是js调用了ActiveX,所以会涉及到安全的问题,如果客户端对ActiveX禁用会出现问题,所以可以在异常处理信息里告诉用户,可以在安全设置里把你的站点的URL放进信任站点

关于打印,还有另一种类型,就是发票套打,可以用Applet实现,也可以用自己写的ActiveX来实现,上一次的一个phs项目里他们就使用vc写的ActiveX,用起来感觉不错,不过依然存在安全上的限制问题,不过如果用Applet的话实际上也是需要客户端安装jre的,从某种角度上来说差不多。话又说回来,做项目不同于做产品,可以对客户有所要求  :)
posted on 2006-05-26 23:08 Alex 阅读(548) 评论(1)  编辑  收藏 所属分类: web技术

评论

# re: 整理:web打印 2008-01-28 17:02 kobe
我想要VC写的ActiveX源代码,可以发给我吗?我的邮箱:kobe8.chen@163.com.谢谢!  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: