Word Web App遇到错误,重装了offic2007也不行
从上述图中,可知实际上Office Web Apps也是可以接入自己开发的系统的。
下面介绍一下整合Office Web Apps的一些理论知识。
要想让自己的系统与Office Web Apps整合就一定要清楚一些概念,首先要理解什么是”WOPI”。
WOPI的英文全称是“Web Application Open Platform Interface”,中文名为“Web应用程序开放平台接口协议”。
WOPI协议提供一系列基于web方式的,使文档能在Office Web Apps中查看与编辑的接口服务(Web Service)。
只要web application按照标准,实现了WOPI的接口,那么就可以调用Office Web Apps。
例子很多,比如SharePoint,Exchange,SkyDriver,Dropbox集成Office Web Apps。
如果自己做的web应用也实现了相应接口,也是可以调用Office Web Apps的。
实现文档的在线编辑查看。
这样比市面上的一些基于ActiveX的在线Office产品有很大的优势。
首先Office Web Apps是基于网页技术,所以是跨平台的,可以在iOS,安卓,WP及PC使用,实现多屏一体。
其次Office Web Apps实现了桌面Office的大部分功能,能在客户机没有安装Office的情况下,实现云端上的文档编辑查看。
下面介绍的内容都是基于http协议下的,https也是类似的。
在WOPI结构中,我们把存放Office文档的web应用叫WOPI Host或者WOPI Server。
把查看编辑操作Office文档的web应用叫WOPI Client或者叫WOPI applications。
所以,Office Web Apps充当的就是WOPI Client的角色。
SharePoint,Exchange,自己开发的文档管理系统充当的就是WOPI Host的角色。
下图为浏览器,server,client三者的请求顺序及关系:从上图可知,WOPI Client 向WOPI Server发送了两次请求1. Tell me about the file2. Give me the file 所以WOPI client至少要提供两个Web服务。
1. 一个是CheckFileInfo服务 此服务返回的是请求文件的基本信息,WOPI Host以json方式返回给WOPI Client.服务URI格式一般为 http://server//wopi*/files/?access_token= 此服务返回的json格式类似为:{"BaseFileName": "Sample Document.docx", "OwnerId": "tylerbutler", "Size": 300519,"SHA256": "+17lwXXN0TMwtVJVs4Ll+gDHEIO06l+hXK6zWTUiYms=", "Version": "GIYDCMRNGEYC2MJREAZDCORQGA5DKNZOGIZTQMBQGAVTAMB2GAYA====" } Json中至少要包括五个属性:BaseFileName, OwnerId, Size, SHA256, 和 Version BaseFileName: 文件名。
OwnerId: 文件所有者的唯一编号。
Size: 文件大小,以bytes为单位。
SHA256: 文件的256位bit的SHA-2编码散列内容。
Version: 文件版本号,文件如果被编辑,版本号也要跟着改变。
更多参数介绍请参考:http://msdn.microsoft.com/en-us/library/hh622920(v=office.12).aspx2. 一个是GetFile服务 此服务返回的是请求文件的内容,WOPI host以数据流的方式返回给WOPI Client.服务URI格式一般为 http://server//wopi*/files//contents?access_token= 注意:CheckFileInfo与GetFile服务的URI格式只差了一个/contents,其他地方的格式是没有不同的。
这么做是为了让WOPI client可以通过CheckFileInfo服务URI推导出GetFile服务的URI,千万不要别出心裁,写出的服务URI格式破坏了这层关系。
在上述URI格式中,都有一个access_taken身份验证令牌。
这个身份验证令牌是必须要有的,WOPI client会把此令牌回发给WOPI Host,由WOPI Host验证当前用户对当前文件的权限。
所以实际上Office Web Apps根本不涉及文档的权限管理。
我们在WOPI client上打开一个Office文档的url地址类似如下:http://wopi-app-server.contoso.com/wv/wordviewerframe.aspx?WOPISrc= http%3A%2F%2Fmy-wopi-host%2Flocal%2Fwopi%2Ffiles%2F1-Sample%2520Document.docx&access_token= dc172034-c6f9-4a43-bc3f-d80dd93c1de1 这个里面有两个传递参数:WOPISrc和access_token WOPISrc参数的内容为:http://my-wopi-host/local/wopi/files/1-Sample%20Document.docx 实际上这个是WOPI Host上的CheckFileInfo服务地址。
WOPI client会通过这个地址加上access_token从WOPI host上获取到1-Sample%20Document.docx文件的信息;并且通过这个地址推导出WOPI Host上的GetFile服务地址,通过GetFile服务获取到1-Sample%20Document.docx文件的内容。
WOPI host上判断什么类型的文件应该怎么用WOPI client打开,WOPI client会提供一个xml文件给WOPI host,这份xml文件叫WOPI Discovery。
格式类似如下:resources/1033/FavIcon_Word.ico" checkLicense="true"> urlsrc="https://wopi-app-server.contoso.com/ wv/wordviewerframe.aspx?"/> urlsrc="https://wopi-app-server.contoso.com/ wv/wordviewerframe.aspx?"/> …… …… 如上所述,打开doc文件,应该使用https://wopi-app-server.contoso.com/ wv/wordviewerframe.aspx的url打开。
WOPI host应该获取这份文件一次,以后打开什么类型的文件,调用什么url自己判断。
Web office 文档在线编辑控件,该如何解决
一般来说两种途径。
一种是利用插件,比如PageOffice。
好处是服务端有一整套的开发接口,劣势是需要安装插件,客户端需要有Word等Office应用程序安装,不同的客户端环境不同可能造成后继使用过程中的维护量。
还有一种是无插件的方式,Office 365就是典型的,不过如果是私有化部署,就不能用Office 365了。
还有一个是uzer.me,能提供无插件的原生Office编辑,提供JS SDK和REST API,各种编程语言都能对接。
好处是无插件,劣势是只支持webRTC的浏览器,比如火狐、谷歌,360极速等,IE需要安装插件后才能支持。
如果只是在线编辑,类似Word的模式,那么其实更多是一个富文本的编辑器,这个用HTML就可以实现,有一些开源的工具的。
请问java web 后台如何接收app端的请求以及返回结果,跪求一个的...
不用想那么复杂,既然你是学java后台的应该做过web项目吧,你只需要在后台写好方法,把请求地址给app那边让他访问就行,获取参数 就用request就可以,返回什么数据直接 return就可以啊。
跳页面的操作应该是交给app吧。
就是后台写个接口而已,给你例子 也就是接收到请求 返回一个字符串。
你是学过java之后 一直没做项目吗?
哪些文档app,可以点击链接就跳转到网页去,而且可以制作成链接分...
class WordToHtml{ public static void CreateWordToHtmlFile(string WordFileDir) { DealWithWordFile(WordFileDir); } //搜索WordFileDir在的*.doc文件 private static void DealWithWordFile(string WordFileDir) { //创建数组保存源文件夹下的文件名 string[] strFiles = Directory.GetFiles(WordFileDir, "*.doc"); for (int i = 0; i < strFiles.Length; i++) { WordToHtmlFile(strFiles[i]); } DirectoryInfo dirInfo = new DirectoryInfo(WordFileDir); //取得源文件夹下的所有子文件夹名称 DirectoryInfo[] ZiPath = dirInfo.GetDirectories(); for (int j = 0; j < ZiPath.Length; j++) { //获取所有子文件夹名 string strZiPath = WordFileDir + "\" + ZiPath[j].ToString(); //把得到的子文件夹当成新的源文件夹,从头开始新一轮的搜索 DealWithWordFile(strZiPath); } } //转化 private static void WordToHtmlFile(string WordFilePath) { try { Microsoft.Office.Interop.Word.Application newApp = new Microsoft.Office.Interop.Word.Application(); // 指定原文件和目标文件 object Source = WordFilePath; string SaveHtmlPath = WordFilePath.Substring(0, WordFilePath.Length - 3) + "html"; object Target = SaveHtmlPath; // 缺省参数 object Unknown = Type.Missing; //为了保险,只读方式打开 object readOnly = true; // 打开doc文件 Microsoft.Office.Interop.Word.Document doc = newApp.Documents.Open(ref Source, ref Unknown, ref readOnly, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); // 指定另存为格式(rtf) object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML; // 转换格式 doc.SaveAs(ref Target, ref format, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); // 关闭文档和Word程序 doc.Close(ref Unknown, ref Unknown, ref Unknown); newApp.Quit(ref Unknown, ref Unknown, ref Unknown); } catch(Exception e) { System.Windows.Forms.MessageBox.Show(e.Message); } } }Word转html类,自己调用吧.
转载请注明出处51数据库 » word web app 接口