您的位置:首页 > 理论基础 > 计算机网络

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: