WEBEDITOR中间件白皮书.doc_第1页
WEBEDITOR中间件白皮书.doc_第2页
WEBEDITOR中间件白皮书.doc_第3页
WEBEDITOR中间件白皮书.doc_第4页
WEBEDITOR中间件白皮书.doc_第5页
免费预览已结束,剩余42页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WebEditor 技术白皮书WebEditor中间件白皮书目录开发背景2软件功能2软件特点3技术特点3运行环境4体系架构5接口说明6WebEditor.ocx 对外Web函数说明6iMsgServer2000.class 函数接口说明12iMsgServer2000.dll 函数接口说明15WebEditor与服务器应用程序函数对应接口说明181、如何使用客户端插件182、如何设置全局变量223、如何调用iMsgServer2000.dll组件224、如何调用iMsgServer2000.class组件23LoadFile()25SaveFile()28LoadTemplate()31WebSaveTemplate()31UpdateFile()32OpenVersion()32SaveVersion()34SaveBookmarks()35LoadBookmarks()36OpenSignature()37ShowSignature()40InsertFile()41InsertImage (“标签名称”, “图片名称”, 是否透明,显示方式)43SendToServer()46开发背景目前政府信息化,办公自动化正如火如荼的进行,而Microsoft Office是办公文档中用的最普遍的一种公文载体,因此,办公自动化要切合实际,与现状相结合,在办公自动化系统中,如何与Microsoft Office文档结合,是很多软件开发公司一直在摸索的问题,我们根据这种情况,自行研制开发了基于Web方式的Microsoft Office网络文档中间件管理方案。这个方案是整个办公系统中的文档处理部分,完全与Microsoft Office兼容,软件开发公司可以利用该方案,与自己研制的办公自动化系统相结合,开发出真正符合办公自动化需求的软件。软件功能功能说明通讯扩展功能采用了自主知识产权的DBPacket对象包协议技术,能够在IE浏览器里非常方便的通过JavaScript或VBScript调用SetMsgByName(设置变量值)和 GetMsgByName(取得变量值) 函数,与服务器进行通讯,从而实现强大的通讯功能,适用与任何复杂前后台数据交换的工作。安全加密功能系统采用前端和后端方式设计,当客户端请求一个服务器文档时,服务器端的组件自动将文档经过加密传输到客户端,客户端将自动检验文档的完整性,以及是否被篡改。当客户端保存文档时,首先将文档加密,然后发送到服务器上,服务器上的后端也自动检验文档的完整性,以及是否被篡改,只有采用双向验证,才能保证文档信息的安全可靠印章签名认证功能WebEditor采用专业电子签名和电子盖章的技术。录入支持功能支持键盘、各种手写笔汉王、蒙恬、联想 等汉字录入方式文档批注功能支持文档批注,支持文字、语音、录影等多媒体批注,可以在不写字的情况下,实现批注。痕迹保留功能支持标准痕迹保留格式,即使文档脱离WebEditor环境,也能保证痕迹的正确显示电子盖章功能实现印章或签名资源预保存功能,用户可以通过密码的方式来获得自己的签名或印章,印章和签名与文档保存在一起,印章或签名可以功过系统的验证来判断真伪。签名功能支持签名,而且签名可以验证。远程编辑、保存功能支持B/S模式的远程在线编辑、保存功能,用户无需其他操作,就可以直接保存到服务器里数据库支持功能支持文件保存到服务器数据库中,可以支持多种数据库,如SQL Server,Oracle,Sybase,MySql等文件支持功能支持文档保存到服务器上,目录可自己定义。模版套红功能支持拟稿时选择模版套红,也支持定稿后的模版套红功能版本支持功能支持版本控制,可以由用户创建多个版本保存HTML功能支持保存为HTML的功能文档兼容性和通用的Office完全兼容支持VBA编程提供Web方式的VBA接口,可以通过Javascript/Vbscript操作Word/Excel,就像VBA一样。系统二次开发提供强大的函数库,支持多种系统环境,多种开发语言,多种数据库。软件特点1、 实现了通过B/S方式进行文档编辑操作。本中间件将客户端的Microsoft Office 融入客户端IE浏览器中,使用户操作更方便。2、 实现了最大限度的和Microsoft Office兼容。用户无须经过更多的培训,就能够熟悉使用采用本中间件开发的文档管理软件。 3、 实现了通过网络在线编辑和保存服务器文档的功能。用户通过中间件打开、编辑、保存服务器上的文档,就像操作本地的文档一样简单。4、 实现了手写签名、电子印章、痕迹保留、版本控制的功能。这几个功能是电子政务和办公自动化中文档管理最重要的功能,本中间件很好的实现了这些功能。5、 实现了客户端软件自动升级的功能本中间件采用插件技术,能够通过版本号的更新,实现客户端软件自动更新功能。技术特点1、 采用IE5.0以上版本内置的HTTP传输协议,通讯性能稳定,高效。2、 采用标准HTTP通讯端口80,使用方便,配置简单、安全性好。3、 采用插件技术,可以完全融入IE浏览器中,方便系统维护、方便用户操作。4、 采用自定义协议包进行数据的组装和分析,系统开放性好,便于二次开发。5、 采用了Com组件和JavaBean组件技术,很好的实现了跨平台系统,便于开发。运行环境硬件平台:台式机 CPU 建议Pentium800 以上,内存推荐128M 以上,硬盘10G以上空间。 服务器 配置相应级别的PC 服务器 软件平台:服务器 Windows2000 Server、IIS5、SQLServer2000或 DominoLinux、Tomcat、MySql、Oracle客户机 Windows98/Me/2000 Professional简体中文版Microsoft Office2000、简体中文IE5.0 以上版本体系架构浏览器客户端软件部分服务器端处理部分HTTP接口数据库系统WebEditor架构Web文档编辑页面(.asp 或 .jsp)标准保存程序(.asp 或 .jsp)文档保存程序(.asp 或 .jsp)Form对象WebEditor.ocx插件DataBase或DiskFileADO或ODBC或JDBCIMsgServer2000.dll(COM组件)或IMsgServer2000.class(JavaBean组件)互联网络HTTP协议接口说明l WebEditor.ocx 对外Web函数说明WebUrl 提交服务器程序路径RecordID 需要打开的记录号Template 需要使用的模版名FileName 需要打开的文件名FileType 需要打开的文件类型EditType 需要使用的方式UserName 用户名Status 当前插件状态Error 错误信息状态ActiveDocument 文档对象接口MsgFilepath 当前文件目录WebEditor插件OnDocumentOpened(vFileName,vObject) 打开文档事件VFileName打开的文件名称VObject 应用程序对象 OnDocumentClosed() 关闭文档事件LoadFile()打开网络文档SaveFile()保存网络文档LoadTemplate()调入网络模板SaveTemplate()保存网络模板UpdateFile()保存定稿的文档GetMsgByName(FieldName)取得服务器返回信息的值SetMsgByName(FieldName, FieldValue)设置相应值,等待发送给服务器MsgTextClear()清除所有设置变量MsgFileClear(FileName)文件清除功能MsgFileLoad(FileName)文件调入MsgFileSave(FileName)文件保存SendToServer()发送设置的值给服务器Open (FileName,true)打开文件Save(FileName,true)保存文件Close()关闭所有文档WebEditor属性方法说明,这些属性和方法可以通过VBScript 或 JavaScript来调用。建立HTML对象,对象名为 属性Office公共 Caption软件编号WebUrl 提交服务器程序路径 RecordID 需要打开的记录号 Template 需要使用的模版名FileName 需要打开的文件名FileType 需要打开的文件类型 EditType 需要使用的方式 UserName 用户名Status 当前插件状态Error 错误信息状态ActiveDocument 文档对象接口MsgFilepath 当前文件目录其中:RecordID,Template,FileName,FileType,EditType,UserName是全局参数。可供后台服务器程序使用。语法: WebUrl 特性: 只写 类型: String 功能: 设置服务器应用程序Url路径 调用: WebOffice.WebUrl=/WebEditor/OfficeServer.asp 说明: OfficeServer.asp是一个服务器应用服务,用户可以根据自己的情况指定自己的应用程序名语法: RecordId 特性: 只写 类型: String 功能: 设置文档的纪录号 调用: WebOffice.RecordId=324923100 说明: RecordId是一个文档的唯一标识,通过这个编号,可以在服务器上找到该文档,这个值也可以是其他字符如: 办公系统解决方案语法: Template 特性: 只写 类型: String 功能: 设置模板编号 调用: WebOffice.Template=10214563698 说明: Template是一个模板文档的唯一标识,通过这个模板编号,可以在服务器上找到该模板文档,这个值也可以是其他字符如: 办公系统解决方案模板语法: FileName 特性: 只写 类型: String 功能: 设置文档名称 调用: WebOffice.FileName=办公系统解决方案.doc 说明: FileName是一个文档的扩展属性,通过这个扩展属性,可以在服务器上找到该模板文档,这个值也可以是其他字符如: 办公系统解决方案模板语法: FileType 特性: 只写 类型: String 功能: 设置文档类型 调用: WebOffice.FileType=.doc 说明: FileType是一个文档的类型,通过这个类型,决定打开的文档是Word还是Excel FileType 为 “.doc” 或 “.xls”语法: EditType 特性: 只写 类型: String 功能: 设置文档打开方式 有两种付值方式: WebOffice.EditType=”X”; X 的含义如下:“0” 只读、且不能拷贝, “1” 起草编辑可写无痕迹保留 , “2” 编辑有痕迹保留 如果需要有痕迹保留功能,就可以设置为 WebOffice.EditType=”2”;语法: UserName 特性: 只写 类型: String 功能: 设置操作文档用户名 调用: WebOffice.UserName=张三 说明: UserName是一个编辑文档的用户名语法: Status 特性: 只读 类型: String 功能: 返回当前状态 调用: alert(WebOffice.Status); 语法: Error 特性: 只读 类型: String 功能: 返回当前错误信息调用: alert(WebOffice.Error); 语法: ActiveDocument 特性: 读写 类型: Object 功能: 返回Word或Excel对象,可用javascript脚本调用VBA对Word,Excel编程 调用: alert(WebOffice.ActiveDocument.Application.UserName) 返回用户名,该用法请参考VBA 如果是Word 文件,ActiveDocument 是Word 的 ActiveDocument对象 如果是Excel 文件,ActiveDocument 是Excel 的ActiveSheet对象 可以通过ActiveDocument.Application得到VBA的Application对象方法:LoadFile()打开网络文档输入参数 无。输出参数 返回成功或失败特别说明 Office公共SaveFile()保存网络文档输入参数 无。输出参数 返回成功或失败特别说明 Office公共Close()关闭所有文档输入参数 无。输出参数 返回成功或失败特别说明 Office公共LoadTemplate()调入网络模板输入参数 无。输出参数返回设置成功或失败。特别说明 Office公共SaveTemplate()保存网络模板输入参数 无。输出参数返回设置成功或失败。特别说明 Office公共UpdateFile()保存定稿的文档输入参数 无。输出参数 返回设置成功或失败。特别说明 Office公共GetMsgByName(FieldName)取得服务器返回信息的值输入参数:FieldName 字段域名称输出参数 返回成功或失败。特别说明 Office公共SetMsgByName(FieldName, FieldValue)设置相应值,等待发送给服务器输入参数:FieldName 字段域名称FieldValue 字段域值输出参数 无特别说明 Office公共MsgTextClear ()清除由SetMsgByName设置的变量输入参数 无。输出参数 无。特别说明 Office公共MsgFileClear(FileName)清除通过MsgFileLoad调入或服务器返回的文件输入参数:FileName 文件名称输出参数 无特别说明 Office公共MsgFileLoad(FileName)调入FileName所指定的文件输入参数:FileName 文件名称输出参数 无特别说明 Office公共MsgFileSave(FileName)保存FileName所指定的文件输入参数:FileName 文件名称输出参数 无特别说明 Office公共SendToServer()发送由SetMsgByName设置的值给服务器输入参数 无。输出参数 成功或失败。特别说明 Office公共Open(FileName,true)打开由FileName指定的文件Save(FileName,true)保存由FileName指定的文件IMsgServer2000Class组件SetMsgByName (String, String)设置字段值GetMsgByName(String) 取得字段值MsgTextClear() 清除所有字段MsgError()取得错误信息MsgError(String)设置错误信息MsgErrorClear()清除错误信息MsgVariant()取得信息包内容MsgVariant(byte)设置信息包内容MsgVersion()取得信息包版本MsgFileLoad(String)装入文件MsgFileSave(String)保存文件MsgFileBody()取得文件内容MsgFileBody(byte)设置文件内容MsgFileSize()取得文件大小MsgFileSize(int)设置文件大小MsgFileClear()清除文件内容l iMsgServer2000.class 函数接口说明SetMsgByName (FieldName String, FieldValue String)功能说明 设置字段值输入参数 设置字段域的名称与所对应的值。 FieldName String 字段域的名称 FieldValue String 字段域的值输出参数 Boolean=成功/失败。特别说明 系统公共GetMsgByName(FieldName String) 功能说明 取得字段值输入参数 FieldName String 字段域的名称。输出参数 String =字段域的值。特别说明 系统公共MsgTextClear() 功能说明 清除所有字段输入参数 无。输出参数 无。特别说明 系统公共MsgFileLoad(FileName String)功能说明 装入文件输入参数 FieldName String 服务器磁盘文件名称。输出参数 Boolean=成功/失败。特别说明 系统公共MsgFileSave(FileName String)功能说明 保存文件输入参数 FieldName String 服务器磁盘文件名称。输出参数 Boolean=成功/失败。特别说明 系统公共MsgFileBody()功能说明 取得文件内容输入参数 无。输出参数 byte,文件内容字节数组。特别说明 系统公共MsgFileBody(byte)功能说明 设置文件内容输入参数 byte,文件内容字节数组。输出参数 无。特别说明 系统公共MsgFileSize()功能说明 取得文件大小输入参数 无。输出参数 long 文件大小。特别说明 系统公共MsgFileSize(int)功能说明 设置文件大小输入参数 int 文件大小。输出参数 无。特别说明 系统公共MsgFileClear()功能说明 清除文件内容输入参数 无。输出参数 无。特别说明 系统公共MsgError()功能说明 取得错误信息输入参数 无。输出参数 String 错误信息。特别说明 系统公共MsgError(String)功能说明 设置错误信息输入参数 String 错误信息内容。输出参数 无。特别说明 系统公共MsgErrorClear()功能说明 清除错误信息输入参数 无。输出参数 无。特别说明 系统公共MsgVariant()功能说明 取得信息包内容输入参数 无。输出参数 byte 信息包所有内容。特别说明 系统公共MsgVariant(byte)功能说明 设置信息包内容输入参数 byte 数据包内容。输出参数 Boolean=成功/失败。特别说明 系统公共MsgVersion()功能说明 取得信息包版本输入参数 无。输出参数 String 版本信息。特别说明 系统公共l iMsgServer2000.dll 函数接口说明IMsgServer2000COM组件SetMsgByName (FieldName,FieldValue)给字段付值GetMsgByName(FieldName) 取字段的值MsgTextClear 清除所有字段MsgError取得或设置错误信息MsgVariant取得信息包所有内容MsgFileLoad(FileName)装入文件MsgFileSave(FileName)保存文件MsgFileBody取得或设置文件内容MsgFileSize取得文件大小MsgFileClear清除文件内容SetMsgByName (FieldName String, FieldValue String)功能说明 设置字段值输入参数 设置字段域的名称与所对应的值。 FieldName String 字段域的名称 FieldValue String 字段域的值输出参数 Boolean=成功/失败。特别说明 系统公共GetMsgByName(FieldName String) 功能说明 取得字段值输入参数 FieldName String 字段域的名称。输出参数 String =字段域的值。特别说明 系统公共MsgTextClear() 功能说明 清除所有字段输入参数 无。输出参数 无。特别说明 系统公共MsgFileLoad(FileName String)功能说明 装入文件输入参数 FieldName String 服务器磁盘文件名称。输出参数 Boolean=成功/失败。特别说明 系统公共MsgFileSave(FileName String)功能说明 保存文件输入参数 FieldName String 服务器磁盘文件名称。输出参数 Boolean=成功/失败。特别说明 系统公共MsgFileBody()功能说明 取得或设置文件内容输入参数 无。输出参数 文件内容。特别说明 系统公共MsgFileSize()功能说明 取得或设置文件大小输入参数 无。输出参数 long 文件大小。特别说明 系统公共MsgFileClear()功能说明 清除文件内容输入参数 无。输出参数 无。特别说明 系统公共MsgError()功能说明 取得或设置错误信息输入参数 无。输出参数 String 错误信息。特别说明 系统公共MsgVariant()功能说明 取得设置信息包内容输入参数 无。输出参数 信息包所有内容。特别说明 系统公共MsgVersion()功能说明 取得信息包版本输入参数 无。输出参数 String 版本信息。特别说明 系统公共l WebEditor与服务器应用程序函数对应接口说明1、如何使用客户端插件在使用前,必须在IE客户端插入WebEditor.ocx控件对象,并给的WebEditorocx初始化全局变量,以便调用。通过如下方法可以引入WebEditor.ocx控件对象:使用如下脚本/系统变量var vFileName=;/打开的文件名var vObject=null;/打开的对象var gFileName=;/文件名var gObject=null;/对象var gOpened=false;/是否被打开var gUserName=;/系统用户OnDocumentOpened(vFileName,vObject);/打开文件事件OnDocumentClosed();/关闭文件事件/打开文档,根据用户权限(EditType),进行初始化设置function OnDocumentOpened(vFileName,vObject) var mProtect,mTools,mTrack,mPrint,mShow; gFileName=vFileName;/取得全局文件名 gObject=vObject;/取得全局对象 /设置痕迹和保护状态 if (webform.WebOffice.EditType=0)mProtect=true;mTools=false;mTrack=false;mPrint=false;mShow=true; else if(webform.WebOffice.EditType=1)mProtect=false;mTools=false;mTrack=false;mPrint=false;mShow=false; else if(webform.WebOffice.EditType=2)mProtect=false;mTools=false;mTrack=true;mPrint=true;mShow=true; else if(webform.WebOffice.EditType=3)mProtect=false;mTools=true;mTrack=true;mPrint=true;mShow=true; if (webform.WebOffice.FileType=.doc) gObject.TrackRevisions=mTrack; gObject.PrintRevisions=mPrint; gObject.ShowRevisions=mShow; if (mProtect) gObject.Protect(2);if (gUserName = ) /保存原来的用户 gUserName=gObject.Application.UserName; /设置系统当前用户 gObject.Application.UserName=webform.WebOffice.UserName; if (webform.WebOffice.FileType=.xls)if (mShow) if (mTrack) gObject.Application.DisplayCommentIndicator = 1; else gObject.Application.DisplayCommentIndicator = 0; if (mProtect) for (var mIndex=1;mIndex=gObject.Application.ActiveWorkbook.Sheets.Count;mIndex+) var mSheet=gObject.Application.ActiveWorkbook.Sheets(mIndex); mSheet.Protect(, true, true, true); if (gUserName = ) /保存原来的用户 gUserName=gObject.Application.UserName; /设置系统当前用户 gObject.Application.UserName=webform.WebOffice.UserName; /打开成功 gOpened = true;function OnDocumentClosed() /关闭成功 gOpened = false;2、如何设置全局变量设置全局变量(假设form的名字为webform): webform.WebOffice.WebUrl=; webform.WebOffice.RecordID=; webform.WebOffice.Template=; webform.WebOffice.FileName=; webform.WebOffice.FileType=; webform.WebOffice.EditType=; webform.WebOffice.UserName=;其中, mServerUrl 是指服务器端的处理程序,演示程序为OfficeServer这个文件(必填);mRecordID 是指当前要打开的文档记录唯一编号,通过这个编号,可以定位该文档记录(可以为空);mTemplate 是指当前文档使用的模版(可以为空);mFileName是指当前文档的中文名称(可以为空);mFileType 是指当前文档的类型(必填);mEditType 是指当前文档的打开方式(必填);mUserName是指当前用户名(必填);通常我们通过mRecordID来定位文档,但也可以通过文件名称来定位文档,这需要看用户的需求来定。3、如何调用iMsgServer2000.dll组件ASP定义对象包dim MsgObj生成对象包并取得客户端WebEditor.ocx发送的数据包Set MsgObj=Server.CreateObject(DBstep.MsgServer2000)创建信息包对象返回处理后的数据包Response.BinaryWrite MsgObj.MsgVariant释放对象包Set MsgObj=nothingVB.NET必须引用iMsgServer2000.dll文件。定义对象包Public MsgObj As DBstep.MsgServer2000Class生成对象包MsgObj = New DBstep.MsgServer2000Class()创建信息包对象MsgObj.Create()取得客户端WebEditor.ocx发送的数据包 MsgObj.MsgVariant = Request.BinaryRead(Request.ContentLength)返回处理后的数据包Response.BinaryWrite(MsgObj.MsgVariant()释放对象包MsgObj.Free()MsgObj = NothingC#.NET必须引用iMsgServer2000.dll文件。申明调用对象:private DBstep.iMsgServer2000 MsgObj;生成对象实例:MsgObj = new DBstep.iMsgServer2000();取得客户端WebEditor.ocx发送的数据包MsgObj.MsgVariant(Request.BinaryRead(Request.ContentLength);返回处理后的数据包Response.BinaryWrite(MsgObj.MsgVariant();4、如何调用iMsgServer2000.class组件申明调用组件包:申明调用对象:private DBstep.iMsgServer2000 MsgObj;生成对象实例:MsgObj=new DBstep.iMsgServer2000();取得客户端WebEditor.ocx发送的数据包MsgObj.MsgVariant(ReadPackage(request);返回处理后的数据包SendPackage(response);其中ReadPackage和SendPackage函数如下: /取得客户端发来的数据包private byte ReadPackage(HttpServletRequest request) byte mStream=null; int totalRead = 0; int readBytes = 0; int totalBytes = 0; try totalBytes = request.getContentLength(); mStream = new bytetotalBytes; while(totalRead totalBytes) request.getInputStream(); readBytes = request.getInputStream().read(mStream, totalRead, totalBytes - totalRead); totalRead += readBytes; continue; catch (Exception e) System.out.println(e.toString(); return (mStream);/发送处理后的数据包private void SendPackage(HttpServletResponse response) try ServletOutputStream OutBinarry=response.getOutputStream() ; OutBinarry.write(MsgObj.MsgVariant() ; OutBinarry.flush(); OutBinarry.close(); catch(Exception e) System.out.println(e.toString(); 以下功能函数如注明需要服务器应用程序支持的,我们采用参数名来获取参数值的方法。操作命令服务器应用程序操作如下IE通过Javascript调用Ocx插件函数发送操作命令服务器端可以获得的全局参数;其中OPTION是OCX函数操作参数,不同的操作,这个值不同mOption = MsgObj.GetMsgByName(OPTION)mRecordId = MsgObj.GetMsgByName(RECORDID)mTemplate = MsgObj.GetMsgByName(TEMPLATE)mFileName = MsgObj.GetMsgByName(FILENAME)mFileType = MsgObj.GetMsgByName(FILETYPE)mUserName = MsgObj.GetMsgByName(USERNAME)列如:IE通过Javascript调用Ocx插件函数发送LoadFile()操作命令mOption = MsgObj.GetMsgByName(OPTION)mRecordId = MsgObj.GetMsgByName(RECORDID)mTemplate = MsgObj.GetMsgByName(TEMPLATE)mFileName = MsgObj.GetMsgByName(FILENAME)mFileType = MsgObj.GetMsgByName(FILETYPE)mUserName = MsgObj.GetMsgByName(USERNAME)此时,mOption 就会得到 “LOADFILE”这样的操作,既mOption = “LOADFILE”请注意:任何操作都会得到mRecordId = MsgObj.GetMsgByName(RECORDID)mTemplate = MsgObj.GetMsgByName(TEMPLATE)mFileName = MsgObj.GetMsgByName(FILENAME)mFileType = MsgObj.GetMsgByName(FILETYPE)mUserName = MsgObj.GetMsgByName(USERNAME)这些全局变量的值,提供给编程开发使用.LoadFile() 功能: 打开Of

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论