Asp.net 网络打印
2009-03-17 18:32
525 查看
一、IE浏览器打印
1、 添加打印控件,IE浏览器安装是就存在了。
<object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" width="0"></object>
2、 document.all.WebBrowser.ExecWB(6,1) 打印
document.all.WebBrowser.ExecWB(6,6) 直接打印
document.all.WebBrowser.ExecWB(8,1) 页面设置
document.all.WebBrowser.ExecWB(7,1) 打印预览
二、WindowPrint直接打印
1、 打印方法即为:window.print()
2、 可以通过设置实现页面部分打印
三、基于OfficeAgen.cab的客户端打印
1、 需要OfficeAgent.CAB包
2、 浏览器需要下载打印控件,如果下载不成功,需要解压OfficeAgen.cab包到system32下,并注册OfficeAgent.dll
3、 添加OfficeAgent的方法控件
<object id="WordContainer" style="display: none" codebase="OfficeAgent.CAB#version=2,0,0,1"
classid="CLSID:5EE00CCC-4762-47C1-ADDB-FE530AF99C25" viewastext></object>
4、 首先要建立好Word模板,在模板中设置好相应得标签。
5、 需要加入信任站点,IE需要修改设置。
6、 客户端需要安装Office
7、 Js代码如下:
<script type="text/javascript">
var C_TEMP_FOLDER = 2;
function getTempFileName(strExtName)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var tfolder = fso.GetSpecialFolder(C_TEMP_FOLDER);
var tname = fso.GetTempName();
if (strExtName)
tname += "." + strExtName;
return tfolder + "//" + tname;
}
function DownloadFileData(strURL,strSaveFileName)
{
var xmlHttp = new ActiveXObject("Msxml2.XmlHttp");
xmlHttp.open("POST",strURL, false);
xmlHttp.send(null);
if (xmlHttp.responseXML.xml.length > 0)
checkErrorResult(xmlHttp.responseXML);
var stm = new ActiveXObject("ADODB.Stream");
stm.Type = 1;
stm.Mode = 3;
stm.Open();
try
{
stm.Write(xmlHttp.responseBody);
stm.SaveToFile(strSaveFileName,2);
}
finally
{
stm.close();
}
}
function checkErrorResult(xmlDoc, information)
{
if (xmlDoc.documentElement.nodeName == "ResponseError")
{
//throw xmlDoc.selectSingleNode("Value").text;
throw createErrorObj(xmlDoc);
}
else if ((xmlDoc.documentElement.nodeName == "ResponseOK") && (information != null))
{
alert(information);
}
}
function createErrorObj(xmlDoc)
{
var eObj = new Object;
eObj.message = xmlDoc.selectSingleNode(".//Value").text;
eObj.stack = xmlDoc.selectSingleNode(".//Stack").text;
var clientNode = xmlDoc.selectSingleNode(".//Client");
if (clientNode)
eObj.client = clientNode.text;
else
eObj.client = "";
return eObj;
}
function printWord()
{
var strFileName = getTempFileName("doc");
DownloadFileData("OfficeCAB.aspx?fileName="+"JS_PrintWord.doc", strFileName);
var app = WordContainer.OpenWord();
app.Visible=true;
app.activate();
var word = WordContainer.OpenDocument(strFileName);
var Seltn=app.Selection;
//姓名
Seltn.Goto(-1,0,0,"txtName");
Seltn.TypeText(document.getElementById("txtName").value);
//性别
Seltn.Goto(-1,0,0,"txtNL");
Seltn.TypeText(document.getElementById("radSex").value);
//籍贯
Seltn.Goto(-1,0,0,"txtJG");
Seltn.TypeText(document.getElementById("txtJG").value);
//工作单位
Seltn.Goto(-1,0,0,"txtGZ");
Seltn.TypeText(document.getElementById("txtGZ").value);
//图片
Seltn.Goto(-1,0,0,"txtIMG");
Seltn.InlineShapes.AddPicture(document.getElementById("img").src);
}
</script>
注意:只需要修改printWord()函数中给标签赋值的部分。
8、 需要新建OfficeCAB.aspx页面,并在其Page_Load事件中写下如下代码:
string strFileName = Request["fileName"].ToString().Trim();
Response.WriteFile(Server.MapPath(".") + "//" + strFileName);
Response.End();
9、 这一部分JS代码如果单独放到JS文件中,会让一些杀毒软件删除,特别注意。
10、注意打印页面图片时,为标签赋值的方法
四、基于ActiveX打印Word
1、 客户端需要安装Office
2、 需要建立好Word模板,并设置好标签
3、 wrd.Documents.Open("http://127.0.0.1/CANJ/JS_PrintWord.doc");需要是一个可以访问的网络地址。
4、 JS代码如下:
<script type="text/javascript">
//转换word的函数
function ToWord()
{
//接收Html控件的值
var strName=form1.txtName.value;
var strNL=form1.radSex.value;
var strJG=form1.txtJG.value;
var strGZ=form1.txtGZ.value;
var strIMG=form1.img.src;
var wrd=new ActiveXObject("Word.Application");
wrd.visible=true;
wrd.Documents.Open("http://127.0.0.1/CANJ/JS_PrintWord.doc");
//利用书签赋值
//姓名
var range = wrd.Range;
range =wrd.ActiveDocument.Bookmarks("txtName").Range;
range.InsertBefore(strName);
//性别
range =wrd.ActiveDocument.Bookmarks("txtNL").Range;
range.InsertBefore(strNL);
//籍贯
var range = wrd.Range;
range =wrd.ActiveDocument.Bookmarks("txtJG").Range;
range.InsertBefore(strJG);
//工作单位
range =wrd.ActiveDocument.Bookmarks("txtGZ").Range;
range.InsertBefore(strGZ);
//图片
wrd.ActiveDocument.Bookmarks("txtIMG").Range.InlineShapes.AddPicture(strIMG);
wrd.Application.Activate();
wrd=null;
}
</script>
5、注意打印页面图片时,为标签赋值的方法
五、C#后台打印Word
1、 需要添加引用Interop.Word.dll
2、 添加命名空间
using System.IO;
using Word;
using System.Diagnostics;
3、 客户端需要安装Office
4、 使用Word.Application方法
5、 基本逻辑:就是在服务器端画出Word文档的各个部分,并保存下来。
6、 IE浏览器打印
7、 WindowPrint直接打印
8、 基于OfficeAgen.cab的客户端打印
9、 基于ActiveX打印Word
10、C#后台打印Word
1、 添加打印控件,IE浏览器安装是就存在了。
<object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" width="0"></object>
2、 document.all.WebBrowser.ExecWB(6,1) 打印
document.all.WebBrowser.ExecWB(6,6) 直接打印
document.all.WebBrowser.ExecWB(8,1) 页面设置
document.all.WebBrowser.ExecWB(7,1) 打印预览
二、WindowPrint直接打印
1、 打印方法即为:window.print()
2、 可以通过设置实现页面部分打印
三、基于OfficeAgen.cab的客户端打印
1、 需要OfficeAgent.CAB包
2、 浏览器需要下载打印控件,如果下载不成功,需要解压OfficeAgen.cab包到system32下,并注册OfficeAgent.dll
3、 添加OfficeAgent的方法控件
<object id="WordContainer" style="display: none" codebase="OfficeAgent.CAB#version=2,0,0,1"
classid="CLSID:5EE00CCC-4762-47C1-ADDB-FE530AF99C25" viewastext></object>
4、 首先要建立好Word模板,在模板中设置好相应得标签。
5、 需要加入信任站点,IE需要修改设置。
6、 客户端需要安装Office
7、 Js代码如下:
<script type="text/javascript">
var C_TEMP_FOLDER = 2;
function getTempFileName(strExtName)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var tfolder = fso.GetSpecialFolder(C_TEMP_FOLDER);
var tname = fso.GetTempName();
if (strExtName)
tname += "." + strExtName;
return tfolder + "//" + tname;
}
function DownloadFileData(strURL,strSaveFileName)
{
var xmlHttp = new ActiveXObject("Msxml2.XmlHttp");
xmlHttp.open("POST",strURL, false);
xmlHttp.send(null);
if (xmlHttp.responseXML.xml.length > 0)
checkErrorResult(xmlHttp.responseXML);
var stm = new ActiveXObject("ADODB.Stream");
stm.Type = 1;
stm.Mode = 3;
stm.Open();
try
{
stm.Write(xmlHttp.responseBody);
stm.SaveToFile(strSaveFileName,2);
}
finally
{
stm.close();
}
}
function checkErrorResult(xmlDoc, information)
{
if (xmlDoc.documentElement.nodeName == "ResponseError")
{
//throw xmlDoc.selectSingleNode("Value").text;
throw createErrorObj(xmlDoc);
}
else if ((xmlDoc.documentElement.nodeName == "ResponseOK") && (information != null))
{
alert(information);
}
}
function createErrorObj(xmlDoc)
{
var eObj = new Object;
eObj.message = xmlDoc.selectSingleNode(".//Value").text;
eObj.stack = xmlDoc.selectSingleNode(".//Stack").text;
var clientNode = xmlDoc.selectSingleNode(".//Client");
if (clientNode)
eObj.client = clientNode.text;
else
eObj.client = "";
return eObj;
}
function printWord()
{
var strFileName = getTempFileName("doc");
DownloadFileData("OfficeCAB.aspx?fileName="+"JS_PrintWord.doc", strFileName);
var app = WordContainer.OpenWord();
app.Visible=true;
app.activate();
var word = WordContainer.OpenDocument(strFileName);
var Seltn=app.Selection;
//姓名
Seltn.Goto(-1,0,0,"txtName");
Seltn.TypeText(document.getElementById("txtName").value);
//性别
Seltn.Goto(-1,0,0,"txtNL");
Seltn.TypeText(document.getElementById("radSex").value);
//籍贯
Seltn.Goto(-1,0,0,"txtJG");
Seltn.TypeText(document.getElementById("txtJG").value);
//工作单位
Seltn.Goto(-1,0,0,"txtGZ");
Seltn.TypeText(document.getElementById("txtGZ").value);
//图片
Seltn.Goto(-1,0,0,"txtIMG");
Seltn.InlineShapes.AddPicture(document.getElementById("img").src);
}
</script>
注意:只需要修改printWord()函数中给标签赋值的部分。
8、 需要新建OfficeCAB.aspx页面,并在其Page_Load事件中写下如下代码:
string strFileName = Request["fileName"].ToString().Trim();
Response.WriteFile(Server.MapPath(".") + "//" + strFileName);
Response.End();
9、 这一部分JS代码如果单独放到JS文件中,会让一些杀毒软件删除,特别注意。
10、注意打印页面图片时,为标签赋值的方法
四、基于ActiveX打印Word
1、 客户端需要安装Office
2、 需要建立好Word模板,并设置好标签
3、 wrd.Documents.Open("http://127.0.0.1/CANJ/JS_PrintWord.doc");需要是一个可以访问的网络地址。
4、 JS代码如下:
<script type="text/javascript">
//转换word的函数
function ToWord()
{
//接收Html控件的值
var strName=form1.txtName.value;
var strNL=form1.radSex.value;
var strJG=form1.txtJG.value;
var strGZ=form1.txtGZ.value;
var strIMG=form1.img.src;
var wrd=new ActiveXObject("Word.Application");
wrd.visible=true;
wrd.Documents.Open("http://127.0.0.1/CANJ/JS_PrintWord.doc");
//利用书签赋值
//姓名
var range = wrd.Range;
range =wrd.ActiveDocument.Bookmarks("txtName").Range;
range.InsertBefore(strName);
//性别
range =wrd.ActiveDocument.Bookmarks("txtNL").Range;
range.InsertBefore(strNL);
//籍贯
var range = wrd.Range;
range =wrd.ActiveDocument.Bookmarks("txtJG").Range;
range.InsertBefore(strJG);
//工作单位
range =wrd.ActiveDocument.Bookmarks("txtGZ").Range;
range.InsertBefore(strGZ);
//图片
wrd.ActiveDocument.Bookmarks("txtIMG").Range.InlineShapes.AddPicture(strIMG);
wrd.Application.Activate();
wrd=null;
}
</script>
5、注意打印页面图片时,为标签赋值的方法
五、C#后台打印Word
1、 需要添加引用Interop.Word.dll
2、 添加命名空间
using System.IO;
using Word;
using System.Diagnostics;
3、 客户端需要安装Office
4、 使用Word.Application方法
5、 基本逻辑:就是在服务器端画出Word文档的各个部分,并保存下来。
6、 IE浏览器打印
7、 WindowPrint直接打印
8、 基于OfficeAgen.cab的客户端打印
9、 基于ActiveX打印Word
10、C#后台打印Word
相关文章推荐
- Asp.net 的网络打印 – Javascript 控制打印
- ASP.NET网络打印
- Asp.net 的网络打印 – Javascript 控制打印
- 19:ASP.NET复习系列- ASP.NET提高- ASP.NET网络打印
- Asp.net 的网络打印 – Javascript 控制打印
- Asp.net 网络打印 – WebBrowser 控件技术打印
- Asp.net 的网络打印
- Asp.net 网络打印 – WebBrowser 控件技术打印
- 第三十二讲 ASP.NET网络打印
- asp.net 网络打印 - Javascript
- Asp.net网络打印随想
- [ASP.NET学习笔记之十一]ASP.NET网络打印
- ASP.NET中数据库数据导入Excel并打印
- asp.net web 打印功能
- ASP.NET区域打印功能
- [网络收集]FreeTextBox在ASP.NET下的使用方法
- ASP.NET网络编程中常用到的27个函数集.
- 实例开发:ASP.NET创建网络相册
- 关于ASP.NET页面打印技术的总结
- asp+.net 传智播客.Net培训免费网络直播课堂