Office Online Server 在线编辑Office文档,安装部署
一、Office Online Server介绍
Office Online Server是 Office Web Apps Server 的升级版本,安装环境必须为两台Windows Server 2012 R2 或 Windows Server 2016服务器(注意,Windows Server 2016 需要 Office Online Server 2017 年 4 月或更高版本。)。一台做转换服务器(安装 Office OnlineServer 2016 软件,除此之外不能安装与office相关的其他程序),一台做域控服务器(转换服务器只有加在域下才能被访问,同时项目部署服务器只有加在域控服务器下才能访问转换服务器)。最好将Office Online Server部署在一台干净的服务器上,而且该服务器必须在域中。
注意事项:
请勿在运行 Office Online Server 的服务器上安装任何其他服务器应用程序。包括 Exchange Server、SharePoint Server、Skype for Business Server 和 SQL Server。如果服务器不足,则可以在这些服务器的其中一台的虚拟机上运行 Office Online Server。
不要在端口 80、443 或 809 上安装依赖 Web 服务器 (IIS) 角色的任何服务或角色,因为 Office Online Server 会定期删除这些端口上的 Web 应用程序。
不要安装任何版本的 Office。如果已经安装,在安装 Office Online Server 之前必须将其卸载。
不要在域控制器上安装 Office Online Server。它不会在包含 Active Directory 域服务 (AD DS) 的服务器上运行。
二、安装准备工作
服务器版本 | 服务器类型 | ip地址 |
---|---|---|
windows server2012 | 域控服务器 | 192.168.255.132 |
windows server2012 | Office online server转换服务器 | 192.168.255.134 |
windows server2012镜像下载地址
文件名
cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso
SHA1
5E88BF62773D4867CF904AF94F66EEA2062E35E4
文件大小
5.16GB
发布时间
2014-12-15
下载地址
ed2k://|file|cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso|5545527296|BD499EBCABF406AB82293DD8A5803493|/
三、部署域控服务器
在192.168.255.132服务器上
添加脚色和功能
安装完成后,点击“升级为域控制器”
选择添加新林,并输入根域名,下一步
填写密码,下一步 ;密码:wisesoft
提示DNS无法创建,不用管,继续下一步;
自动填写(oos),下一步;
点击安装,安装完成后重启系统即可
四、搭建Office Online Server转换服务器
在192.168.255.134服务器上
将Office Online Server服务器加入域服务器
打开控制面板->网络和Internet->网络和共享中心,并点击更改适配器设置
右击网络并打开属性,双击IPV4
将DNS服务器配置为刚才配置好的域控服务器IP【192.168.255.132】
更改计算机名称加入域
右键电脑,点击属性,点击高级系统设置
选择域,并输入之前域控服务器中配置的根域名
输入域服务器管理员账号密码
出现欢迎界面表示加入域成功
重启系统
重启后,成功配置域环境
将组件修复功能启用
WIN+R,输入“gpedit.msc”
刷新组策略,打开“PowerShell”,输入“gpupdate / force”,刷新;
五、在域控服务器中添加服务器
打开域控服务器,点击管理 > 添加服务器,输入转换服务器修改后的计算机名称,立即查找。将搜索到的服务器双击添加到右边,点击确定。
在192.168.1.132 域控服务器中操作
在域控服务器中,所有服务器显示两台服务器,并都是联机状态则表示成功
六、在Office Online Server转换服务器上安装Office Online Serve
在192.168.255.134服务器上
1、打开 Microsoft PowerShell 提示符,然后运行此命令示例来安装必需的角色和服务
如果是:Windows Server 2012 R2
Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices,NET-Framework-Features,NET-Framework-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45,Windows-Identity-Foundation,Server-Media-Foundation
如果是:Windows Server 2016
Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,NET-Framework-Features,NET-Framework-45-Features,NET-Framework-Core,NET-Framework-45-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45,Windows-Identity-Foundation,Server-Media-Foundation
安装完成
2、安装必备软件
.NET Framework 4.5.2
下载地址:httpswww.microsoft.comzh-cndownloadconfirmation.aspxid=42643Visual C++ Redistributable Packages for Visual Studio 2013
下载地址:https://www.microsoft.com/zh-CN/download/details.aspx?id=40784Visual C++ Redistributable for Visual Studio 2015
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=48145Microsoft.IdentityModel.Extention.dll
下载地址:https://go.microsoft.com/fwlink/p/?LinkId=620072
2.1、安装Microsoft .NET Framework4.5.2
2.2、安装Visual C++ Redistributable Packages for Visual Studio 2013
2.3、安装Visual C++ Redistributable for Visual Studio 2015
2.4、安装Microsoft.IdentityModel.Extention.dll
3、安装office online sevrer 2016
office online sevrer 2016安装包下载地址
文件名
cn_office_online_server_may_2016_x64_dvd_8480704.iso
SHA1
A85B00E0D1DDD219985FBC6B76EF2E422A5EEDBD
文件大小
676.81MB
发布时间
2016-05-09
下载地址
ed2k://|file|cn_office_online_server_may_2016_x64_dvd_8480704.iso|709687296|99014E02579B6E08E7172D05857F2D05|/中文语言包:ed2k://|file|cn_office_online_server_language_pack_may_2016_x64_8783021.exe|122025248|3E8073A25EE45E0C106E34FA86CB006B|/
点击setup.exe
安装中文语言包
七、相关配置
1、配置Office Online Server
在192.168.255.134服务器上
打开PowerShell,输入:
启动服务场
Import-Module OfficeWebApps
部署服务器场:
New-OfficeWebAppsFarm -InternalURL “http://wisesoftOffice.wisesoft.com” -ExternalUrl “http://192.168.255.134” -AllowHttp –EditingEnabled
备注:192.168.255.134
为当前服务器的IP;http://wisesoftOffice.wisesoft.com
为Office Online Server服务器192.168.255.134中计算机全名称
注:如果输入命令报错,请重新启动电脑
-InternalURL:
--内网浏览地址,http://xx.domin.com 其中 xx表示计算机名 domin.com 表示域名 也可以设置为对应的IP地址
一般是http://office主机名.AD域控地址-ExternalURL:外网浏览地址-AllowHttp: 允许80端口访问-OpenFromUrlEnabled:允许通过url方式进行预览-CacheLocation: 缓存文件存放路径 默认是C:\ProgramData\Microsoft\OfficeWebApps\Working\d -CacheSizeInGB: 最大缓存文件大小 单位GB 默认为15GB
测试office online server是否安装部署成功
在office online 的浏览器中输入http://192.168.255.134/hosting/discovery
或http://wisesoftOffice.wisesoft.com/hosting/discovery
输入http://192.168.255.134/op/generate.aspx
或者http://wisesoftOffice.wisesoft.com/op/generate.aspx
注:若http://192.168.255.134/hosting/discovery
能登录,
http://192.168.255.134/op/generate.aspx
显示“服务器错误”,
控制台输入Set-OfficeWebAppsFarm -OpenFromUrlEnabled:$true
即可访问成功
当然这两个地址在域控服务器上面访问 也是ok 的
在第一个文本框中输入:远程服务器文件地址
点击Create Link在第二个文本中生成:在线预览地址,(因为文件时其它服务器的,没有文件操作权限,只能预览,无法编辑)
如下图:
2、文档地址配置(忽略)
由于微软这款软件对IP有访问限制,所以需将IP转化为域名进行访问,所以需要进行配置,来让软件自动进行域名转化为IP,具体路径如下
注:此IP是指要访问文档路径的IP
C:\Windows\System32\drivers\etc
打开hosts文件,在其中添加对应IP和自定义的域名,即可访问
192.168.255.134 wisesoft.office.com
不用重启,hosts生效
ipconfig /displaydns//显示DNS缓存内容ipconfig /flushdns//删除DNS缓存内容
输入:http://wisesoft.office.com/hosting/discovery
输入:http://wisesoft.office.com/op/generate.aspx
3、大文件转码配置(必须配置)
安装后的office online server 对大文件会有限制,所以需要配置才能进行访问,具体配置路径如下
在C:\Program Files\Microsoft Office Web Apps\OpenFromUrlHost
在C:\Program Files\Microsoft Office Web Apps\OpenFromUrlWeb
将上面两个文件夹中的Settings_Service.ini文件进行修改,在其中填入以下内容并保存,注意后面不要加分号
OpenFromUrlMaxFileSizeInKBytes=(System.Int32)512000
重启Office Online服务
services.msc
八、WOPI代码实现
1、域控服务器安装java环境
java 代码在域控服务器上面运行,所以要现在域控服务器上面安装java环境
在192.168.255.132域控服务器上
2、域控服务器上启动wopi 服务
在192.168.255.132域控服务器上
WOPI的英文全称是“Web Application Open Platform Interface”,中文名为“Web应用程序开放平台接口协议”。WOPI协议提供一系列基于web方式的,使文档能在 Office Web Apps 中查看与编辑的接口服务。
只要 web 应用按照标准,实现了 WOPI 的接口,那么就可以调用 Office Web Apps,实现文档的在线预览编辑。比如 SharePoint,Exchange,SkyDriver,Dropbox 集成了 Office Web Apps。
在 WOPI 结构中,存放Office文档的 web 应用叫 WOPI Host 或者 WOPI Server。把查看编辑操作 Office 文档的 web 应用叫 WOPI Client 或者叫 WOPI applications。SharePoint,Exchange,自己开发的文档管理系统充当的就是 WOPI Host,Office Web Apps 充当的就是 WOPI Client 。
需要实现3个接口
GET api/wopi/files/{name}
GET api/wopi/files/{name}/contents
POST api/wopi/files/{name}/contents
其中第一个接口获取文件的信息,返回的是json数据格式,第二个是获取文件流,第三个是保存修改文件。
package com.wopihost.controller;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.wopihost.entity.FileInfo;
import org.apache.tomcat.util.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLDecoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;/*** WOPI HOST* Created by ethendev on 2017/4/15.*/
@RestController
@RequestMapping(value="/wopi")
public class WopiHostContrller {@Value("${file.path}")private String filePath;/*** 获取文件流* @param name* @param response*/@GetMapping("/files/{name}/contents")public void getFile(@PathVariable(name = "name") String name, HttpServletResponse response) {System.out.println("GET获取文件啦!!!!");InputStream fis = null;OutputStream toClient = null;try {// 文件的路径String path = filePath + name;File file = new File(path);// 取得文件名String filename = file.getName();// 以流的形式下载文件fis = new BufferedInputStream(new FileInputStream(path));byte[] buffer = new byte[fis.available()];fis.read(buffer);// 清空responseresponse.reset();// 设置response的Headerresponse.addHeader("Content-Disposition", "attachment;filename=" +new String(filename.getBytes("utf-8"), "ISO-8859-1"));response.addHeader("Content-Length", "" + file.length());toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();System.out.println("GET获取文件Contents结束!!!!");} catch (IOException ex) {ex.printStackTrace();} finally {try {fis.close();toClient.close();} catch (IOException e) {e.printStackTrace();}}}/*** 保存更新文件* @param name* @param content*/@PostMapping("/files/{name}/contents")public void postFile(@PathVariable(name = "name") String name, @RequestBody byte[] content) {System.out.println("POST获取文件Contents啦!!!!");// 文件的路径String path = filePath + name;File file = new File(path);FileOutputStream fop = null;try {if (!file.exists()) {file.createNewFile();//构建文件}fop = new FileOutputStream(file);fop.write(content);fop.flush();System.out.println("POST获取文件结束!!!!");System.out.println("------------ save file ------------ ");} catch (IOException e) {e.printStackTrace();} finally {try {fop.close();} catch (IOException e) {e.printStackTrace();}}}/*** 获取文件信息* @param request* @param response* @return* @throws UnsupportedEncodingException*/@GetMapping("/files/{name}")public void getFileInfo(HttpServletRequest request, HttpServletResponse response) {System.out.println("获取文件啦!!!!");String uri = request.getRequestURI();FileInfo info = new FileInfo();try {// 获取文件名, 防止中文文件名乱码String fileName = URLDecoder.decode(uri.substring(uri.indexOf("wopi/files/") + 11, uri.length()), "UTF-8");if (fileName != null && fileName.length() > 0) {System.out.println("文件不为空啊");File file = new File(filePath + fileName);if (file.exists()) {// 取得文件名info.setBaseFileName(file.getName());info.setSize(file.length());info.setOwnerId("admin");info.setVersion(file.lastModified());info.setSha256(getHash256(file));info.setAllowExternalMarketplace(true);info.setUserCanWrite(true);info.setSupportsUpdate(true);info.setSupportsLocks(true);}}ObjectMapper mapper = new ObjectMapper();String Json = mapper.writeValueAsString(info);response.setContentType("application/json;charset=utf-8");response.getWriter().write(Json);} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (JsonProcessingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 获取文件的SHA-256值* @param file* @return*/public static String getHash256(File file) {String value = "";// 获取hash值try {byte[] buffer = new byte[1024];int numRead;InputStream fis = new FileInputStream(file);//如果想使用SHA-1或SHA-256,则传入SHA-1,SHA-256MessageDigest complete = MessageDigest.getInstance("SHA-256");do {//从文件读到buffernumRead = fis.read(buffer);if (numRead > 0) {//用读到的字节进行MD5的计算,第二个参数是偏移量complete.update(buffer, 0, numRead);}} while (numRead != -1);fis.close();value = new String(Base64.encodeBase64(complete.digest()));} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return value;}}
jar下载地址:https://download.csdn.net/download/qq_29914837/12305930
启动wopihost-0.0.1-SNAPSHOT.jar
上传 wopihost-0.0.1-SNAPSHOT.jar 至OfficeServer
创建一个存放office文件的目录【如:C:\officeDoc\】
java -jar wopihost-0.0.1-SNAPSHOT.jar --file.path=C:\\officeDoc\\
在该C:\officeDoc\目录下创建一些测试文件如
excel编辑url访问地址:
可以通过http://wisesoftoffice.wisesoft.com/hosting/discovery
查看对应地址:
http://wisesoftoffice.wisesoft.com/x/_layouts/xlviewerinternal.aspx?edit=1&WOPISrc=http://192.168.255.132:8080/wopi/files/2.xlsx
这个版本支持的文件:
预览:excel、word、PDF、PowerPoint
编辑:excel、word、PowerPoint
Office Online Server 概述
九、通过拼接的地址即可实现office 的在线预览
可以使用office online 平台进行office 文档的在线查看,通过获取文文档的网络地址,通过拼接的地址即可实现office 的在线预览
https://office.net.cn/op/view.aspx?src=http%3A%2F%2Foffice.eimm.yl.net.cn%3A8099%2Fproject%2Ftest.docx
URLEncode和URLDecode用于完成普通字符串和 application/x-www-from-urlencoded MIME字符串之间的相互转化
public static void main(String[] args) {try {// 将application/x-www-from-urlencoded字符串转换成普通字符串String keyWord = URLDecoder.decode("http%3A%2F%2Foffice.eimm.yl.net.cn%3A8099%2Fproject%2Ftest.docx", "UTF-8");System.out.println(keyWord);// 将普通字符创转换成application/x-www-from-urlencoded字符串String urlString = URLEncoder.encode("http://office.eimm.yl.net.cn:8099/project/test.docx", "UTF-8"); //输出%C4%E3%BA%C3System.out.println(urlString);} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
http://office.eimm.yl.net.cn:8099/project/test.docx
http%3A%2F%2Foffice.eimm.yl.net.cn%3A8099%2Fproject%2Ftest.docx
需要注意的是:office 在线预览限制
1、文档访问地址不能直接使用 ip,需要通过域名访问
2、文档的格式(必须为以下格式之一):
Word:docx、docm、dotm、dotx
Excel:xlsx、xlsb、xls、xlsm
PowerPoint:pptx、ppsx、ppt、pps、pptm、potm、ppam、potx、ppsm
3、文档的大小:Word 和 PowerPoint 文档必须小于 10 兆字节;Excel 必须小于五兆字节(通过office web app 部署的本地服务器可以设置文档大小)
如果你觉得本篇文章对你有所帮助的话,麻烦请点击头像右边的关注按钮,谢谢!
技术在交流中进步,知识在分享中传播
Office Online Server 在线编辑Office文档,安装部署相关推荐
- Office 365实现多人在线编辑同一个文档(下)
接下来我要实现多人编辑同一个Excel文件,这里以Source.xlsx为例,右键选择共享 设置共享权限以及共享给谁 权限有如下,如果是发送给别人看,就选择任何人(可向收到此链接的任何人授予访问权限, ...
- 利用XSL和ASP在线编辑XML文档
本文通过一个详细的例子,来阐述了在线编辑XML文档数据的方法.由于Netscape对XML的支持比较弱,因此,要实现跨平台的数据交换,数据的处理必须在服务器端进行.要编辑XML文档,首先要做的事情就是 ...
- HTML文件发到群里,如何在微信群里发可在线编辑的文档
微信是一个大家都会使用的社交软件,在微信群中,很多用户都会使用手机交友,那么如果用户在使用的时候需要与微信群中的好友一起互动,在处理工作问题的时候,需要所有成员都便捷文档,让更多的用户可以参与到办公或 ...
- office 2003也能编辑.docx文档
office 2003也能编辑.docx文件 =摘要= 近来需要编辑一下.docx为后缀的文档(office 2007以上的文档).由于我的机器里装了一个win7和 office2003,所以是不能直 ...
- pageoffice 在线编辑 word 文档,保存之后返回自定义的值,并把值传到父页面
1. 描述:最近项目有个在线编辑office 办公文档的功能, 采用的方案是用 pageoffice 在线编辑 office 文档. 因为高版本的谷歌和火狐不支持任何插件了.所以pageoffi ...
- 在线编辑word文档,weboffice在线操作word文档
在线操作编辑word文档已经是时下ERP和OA系统必须要实现的功能点之一. 下面就来详细讲解一下weboffice是如何实现的. 这里只做简单的程序讲解,原理性的东西不做过分的赘述. 不管你是ajax ...
- Vue或uniapp使用luckysheet免费开发多人在线编辑Excel文档
前言 一直想用uniapp开发个在线多人编辑Excel文档的APP,苦于一直没找到免费的开源库,今天心血来潮,和大神聊起知道有luckysheet这么个免费的东东,看了文档,还挺合适.立即撸起.虽说是 ...
- 在线编辑word文档代码
<html xmlns="http://www.w3.org/1999/xhtml%22 > <head runat="server"> < ...
- 在线编辑word文档 可保存到服务器(转)
使用说明:该方法只在office xp 和 2003上 测试通过,2000及以下 版本没试. 注意:你要打开的服务器端的word文档要有写权限.iis要开起 web服务扩展中的webdav为允许 具体 ...
最新文章
- K-近邻算法之案例:鸢尾花种类预测--数据集介绍
- SQL Server基础操作(此随笔仅作为本人学习进度记录二)
- 认识CentOS下boot目录和el5、el6文件
- STM32 基础系列教程 40 - Lwip_mqtt
- CSP认证	201312-4有趣的数[C++题解]:组合数、数学
- 如何修改容器的一些参数
- ssh端口转发(之kettle ssh方式连接数据库)
- Java Stream Collectors.groupingBy()实现分组(单字段分组,多字段分组)
- 移动端媒体尺寸_网络推广外包浅析提升移动端网站建设效率有哪些网络推广外包技巧-企服...
- 地磅称重软件源码_地磅称重软件需求梳理的重要性
- mysql备份与还原,增量备份;使用ibd和frm文件恢复数据
- 自己写一个strcmp函数(C++)
- js实现oss批量下载文件_jquery批量下载文件
- 河南省计算机报名流程图,报考流程
- 关于一些像是哲学的思考???
- Java学习笔记 --- 多分支
- 如何限流,具体实现有哪些?
- Array方法、String方法
- [实战Java高并发程序设计:读后感:参考文献]第一章
- JS 点击每个图片弹出对话框
热门文章
- java建树_JAVA实现通过中序遍历和后序遍历序列建树,并求树的高度,用层次遍历做验证...
- Java的反射基础与常用方法
- 揭秘LOL背后的IT基础架构丨SDN解锁新基础架构
- Django自定义url(path)转换器
- 复杂网络——绘图工具gnuplot技巧
- Improving Transformer Optimization Through Better Initialization
- 通过SMPP连接SMSC发送短信(转)
- 分享100个Java方面PPT学习资料
- [技术] 使用Shader Graph着色器视图制作交互式顶点特效
- hexo-butterfly使用aplayer加载音乐页面