在webform中如何使用打印水晶

michaellys 2005-10-25 08:50:35
最近做工程遇到一麻烦,客户要求实现web打印报表,并且要求不能是使用IE自带的打印功能,这可愁死我了,各位高手帮帮忙。
...全文
271 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
viperboy 2005-11-08
  • 打赏
  • 举报
回复
我写过的一个方法,但是个人觉得比较麻烦,如果有兴趣就看下去:
1.再写一个页面webform.aspx,里面的asp代码是:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm3.aspx.vb" Inherits="WebNET.WebForm3"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm3</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language="javascript" src="print.js"></script>
<script language="javascript">
function closeform()
{
window.close()
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form name="form1">
<table cellSpacing="0" cellPadding="0" border="0" style="WIDTH: 608px; HEIGHT: 24px">
<tr>
<td style="WIDTH: 358px">
<INPUT id="print" style="WIDTH: 496px; COLOR: yellow; HEIGHT: 24px; BACKGROUND-COLOR: blue"
onclick="printFrame(print1);" type="button" value="Print"> 
</td>
<td>
<INPUT style="WIDTH: 500px; HEIGHT: 24px; BACKGROUND-COLOR: yellow" type="button" value="CloseForm"
onclick="closeform()">
</td>
</tr>
</table>
<IFRAME style="WIDTH: 98.82%; HEIGHT: 92.57%" name=print1 src="<%Response.Write(CM_URL)%>" width="100%" height="100%">
</IFRAME>
</form>
</body>
</HTML>
2.后台代码是:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CM_URL = Request.Params("CM_URL")

'Dim ThirdName As String = CType(Session.Item("FF"), String)

End Sub
3.给你一个print.js文件:
// The code by Captain <cerebrum@iname.com>
// Mead & Company, http://www.meadroid.com/wpm/
// fake print() for IE4.x
if ( !printIsNativeSupport() ) {
window.print = printFrame;
}
// main stuff
function printFrame(frame, onfinish) {
if ( !frame ) {
frame = window;
}
if ( frame.document.readyState !== "complete" &&
!confirm("The document to print is not downloaded yet! Continue with printing?") ) {
if ( onfinish ) {
onfinish();
}
return;
}
if ( printIsNativeSupport() ) {
/* focus handling for this scope is IE5Beta workaround,
should be gone with IE5 RTM.
*/
var focused = document.activeElement;
frame.focus();
frame.self.print();
if ( onfinish ) {
onfinish();
}
if ( focused && !focused.disabled ) {
focused.focus();
}
return;
}
var eventScope = printGetEventScope(frame);
var focused = document.activeElement;

window.printHelper = function() {
execScript("on error resume next: printWB.ExecWB 6, 1", "VBScript");
printFireEvent(frame, eventScope, "onafterprint");
printWB.outerHTML = "";
if ( onfinish ) {
onfinish();
}
if ( focused && !focused.disabled ) {
focused.focus();
}
window.printHelper = null;
}
document.body.insertAdjacentHTML("beforeEnd",
"<object id=\"printWB\" width=0 height=0 \
classid=\"clsid:8856F961-340A-11D0-A96B-00C04FD705A2\"></object>");
printFireEvent(frame, eventScope, "onbeforeprint");
frame.focus();
window.printHelper = printHelper;
setTimeout("window.printHelper()", 0);
}

// helpers
function printIsNativeSupport() {
var agent = window.navigator.userAgent;
var i = agent.indexOf("MSIE ")+5;
return parseInt(agent.substr(i)) >= 5 && agent.indexOf("5.0b1") < 0;
}

function printFireEvent(frame, obj, name) {
var handler = obj[name];
switch ( typeof(handler) ) {
case "string": frame.execScript(handler); break;
case "function": handler();
}
}

function printGetEventScope(frame) {
var frameset = frame.document.all.tags("FRAMESET");
if ( frameset.length ) {
return frameset[0];
}
return frame.document.body;
}
试一下!不好用的话请发mail至viperboy@163.com
murphydai 2005-11-07
  • 打赏
  • 举报
回复
先把表报导出到服务器端,比如*.pdf格式,然后地址转到这个文件,可以用redirect,transfer等函数,比如http://....../*.pdf.在客户端装acrobat reader就能打开了.至于文件名可以在session中存一下.
xiaojhun 2005-10-31
  • 打赏
  • 举报
回复
我也想知道
michaellys 2005-10-27
  • 打赏
  • 举报
回复
设置printmode为activex后,要写与打印相关的代码吗?
woainin 2005-10-27
  • 打赏
  • 举报
回复
设置printmode为activex
michaellys 2005-10-26
  • 打赏
  • 举报
回复
我也试用了一下CR10,但没有具体教程,只做到了一些基本的功能,而打印功能还没有做到,现在只好导出为.pdf然后才打印,麻烦。
极客行天下 2005-10-25
  • 打赏
  • 举报
回复
正在学着用 10做,里面有个ActiveX方式,好像可以。
michaellys 2005-10-25
  • 打赏
  • 举报
回复
如果在windows窗体做此项任务,很容易,可以使用printform控件。而在WEBFORM中,那就有点麻烦。

4,820

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧