Office Webアプリケーションを使用したアプリケーションの統合

展開の詳細については、あなたは私の他の記事を参照することができ、「オフィスのオンラインブラウジングのOffice Web Appsのドキュメント」

Wopi契約については、次のリンクを参照してください可能性があります。

[MS-WOPI]:Webアプリケーションオープンプラットフォームインターフェイスプロトコル

https://msdn.microsoft.com/en-us/library/hh622722(v=office.12).aspx

IntroducingWOPI

http://blogs.msdn.com/b/officedevdocs/archive/2013/03/21/introducing-wopi.aspx

Buildingan Office Webアプリケーション(OWA)WOPIホスト:

https://code.msdn.microsoft.com/office/Building-an-Office-Web-f98650d6

:CSDNは、上記の基本的には以上の上記の記事の翻訳であるとの彼自身の理解を追加、同様の記事を持っているシステム(a)は独自の開発にOffice Webアプリケーションを統合する方法をあなたは慎重にこれらの記事を読めば、あなたは自分のプログラムにオーダー(Wopiホスト)とOffice Webアプリケーション(Wopiクライアント)に統合することを知っている必要があり、Wopiホストには、少なくとも2つのサービスを提供する必要があります。

1、CheckFileInfoサービス、このサービスは、基本的な情報ファイルに戻ります

詳細については、[MS-WOPI]を参照sectionTop 3.3.5.1.1

図2に示すように、返された基本的なサービス情報に係るストリームファイルに対応するデータを返すGETFILEサービス

詳細については、[MS-WOPI]を参照sectionTop 3.3.5.3.1節。

上記の公式文書とリンクしたように、これは非常に詳細に説明され、ここで言っているのではない、私はまた、あなたが何か新しいことを学ぶとき、より多くの公式文書を参照してくださいことを示唆しています。同時に、Microsoftの従業員も、直接学ぶためにそれらをデモで使用されたデモWopiホスト、を提供してくれました。:ここではデモダウンロードしhttps://code.msdn.microsoft.com/office/Building-an-Office-Web-f98650d6をFilecontroller.csはデモWopihostプロジェクト内のファイルを見つけ、次のコードを探します。

      
      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
      
      
///オフィス文書のメタデータを返します。
/// </要約>
/// ます。<param name = "名前">ファイル名</ param>の
/// <PARAM NAME = "access_tokenは">このサーバー用に生成されたアクセストークン</ param>の
/// <リターン> </リターン>
[ルート("ファイル/ {名前} /")]
公共 CheckFileInfo(文字列名、文字列 access_tokenは
{
検証(名前、access_tokenは);
VAR のfileInfo = _fileHelper.GetFileInfo(名);
BOOL updateEnabledを= ;
if ( bool.TryParse(WebConfigurationManager.AppSettings[ "updateEnabled"].ToString(), out updateEnabled))
{
fileInfo.SupportsUpdate = updateEnabled;
fileInfo.UserCanWrite = updateEnabled;
fileInfo.SupportsLocks = updateEnabled;
}
return fileInfo;
}

      
      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
      
      
// GET api/<controller>/5
/// Get a single file contents
/// </summary>
/// <param name="name">filename</param>
/// <returns>a file stream</returns>
[Route( "files/{name}/contents")]
public HttpResponseMessage Get(string name, string access_token)
{
大专栏  应用程序与 Office Web Apps 整合class="keyword">try
{
Validate(name, access_token);
var file = HostingEnvironment.MapPath( "~/App_Data/" + name);
var responseMessage = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new FileStream(file, FileMode.Open, FileAccess.Read);
responseMessage.Content = new StreamContent(stream);
responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue( "application/octet-stream");
return responseMessage;
}
catch (Exception ex)
{
var errorResponseMessage = new HttpResponseMessage(HttpStatusCode.InternalServerError);
var stream = new MemoryStream(UTF8Encoding.Default.GetBytes(ex.Message ?? ""));
errorResponseMessage.Content = new StreamContent(stream);
return errorResponseMessage;
}
}

上面的两个方法就是对CheckFileInfo服务和GetFile服务的实现,理解起来并不困难。

由于是一个demo实现,我就直接拿来部署了,等到要改造的时候再去琢磨,打开配置web.config配置文件,修改如下的配置,表示此程序将要部署的地方和别名:

这里写图片描述

访问http://192.168.1.136/hosting/discovery,保存内容到Discovery.xml文件,用此文件替换掉demo中的 WopiHostApp_DataDiscovery.xml文件:

这里写图片描述

我这里直接部署在Office Web Apps所在的服务器上了, 在 HTTP80网站下面添加一个应用程序,别名为dist,与web.config对应上就行了,如下所示:

这里写图片描述

部署成功后,访问 http://192.168.1.136/dist ,打开此demo的主界面,在菜单栏upload页面里面上传一份文档,上传成功后会生成一个链接,访问链接就可以看到刚刚生成的文档了,如下所示:

这里写图片描述

这里写图片描述

由于在web.config 中设置了 updateEnabled=true,所以这里可以对打开的excel进行编辑,如下所示:

这里写图片描述

这个demo就算部署成功了,至于这两个服务具体实现细节,查看代码即可。值得注意的是:这个demo实现并不支持word文档的编辑,作者也进行了说明:

这里写图片描述

The solution and project have been updated to MVC5, and Web API 2. In
addition, editing PowerPoint (PPTX), and Excel files has been added.
Word Editing is not part of the solution. Also, PDF viewing is
enabled.

在代码中位置如下:

      
      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
      
      
// POST api/<controller>
/// Not implemented, but will provide editing (simple)
/// </summary>
/// <param name="access_token"></param>
[Route( "files/{name}/contents")]
public async void Post(string name, [FromUri] string access_token)
{
var body = await Request.Content.ReadAsByteArrayAsync();
var appData = HostingEnvironment.MapPath( "~/App_Data/");
var fileExt = name.Substring(name.LastIndexOf( '.') + 1);
var outFile = Path.Combine(
appData,name);
//Guid.NewGuid().ToString() +
//"_" +
//name);
//var fi = new FileInfo(outFile);
File.WriteAllBytes(outFile, body);
}

这里应该是故意不给实现的,要想实现word编辑,就得靠各位的努力了,我也在研究中,希望和大家一起交流交流。当然,你也可以用任何的语言来实现这个程序,只要保证那两个接口能返回相应的文件信息和对应的数据流就行了,至于文件放在何处,用什么语言,这都是小事。

JAVA程序整合可参考我的这篇文章:《Java 程序与 Office Web Apps 整合》

おすすめ

転載: www.cnblogs.com/sanxiandoupi/p/11698507.html