weboffice文件修改后无法保存_weboffice保存文档时自动打开了保留修改痕迹 - CSDN
精华内容
参与话题
  • weboffice 6版本实现在线word

    万次阅读 2018-08-11 13:59:31
    公司最近需要开发一个在线word功能,开始用pageoffice开发的功能被否决因为pageoffice的版权问题,采用点聚weboffice的免费版开发.因为多个页面需要使用在线word功能,对于weboffice提供的activeX对象进行一定的封装,...

    公司最近需要开发一个在线word功能,开始用pageoffice开发的功能被否决因为pageoffice的版权问题,后采用点聚weboffice的免费版开发.因为多个页面需要使用在线word功能,对于weboffice提供的activeX对象进行一定的封装,减少代码的冗余 和开发时的方便.
    一 简单分析
    weboffice是需要安装ocx控件来完成对本地word的调用,因为activex的原因,所以在IE上的兼容肯定比较好.由于技术和资源问题该实现不支持谷歌和火狐.
    对于ocx控件可以提供两种安装方式,如果放在web服务器上的话,可以提供cab文件实现在线安装. 第二种方式,直接在客户端安装exe文件.
    二 实现方式
    这里写图片描述
    首先需要成功调用activex对象,实现上图效果.因为activex obj的原因. 背景自己无法实现改变,别人说:可以通过iframe调整z-index效果,再配合js中object的param属性配置实现.但是尝试多次,无法实现,可能和IE版本有关系
    这里写图片描述
    a)新建文档
    新建文档调用了封装的webofficeTool的createWord方法,因为开发时间原因没有提供完全的封装
    只是使用了weboffice的LoadOriginalFile方法来打开服务器的模板文件,并且简单提供了提示消息.(本来打算改成bootstrap的tooltip来提示,后来因为web服务器样式原因需统一风格,还得修改N多的css样式来达到系统一致的风格而放弃)
    这里写图片描述
    加载成功后效果
    这里写图片描述
    因为word的滚动和 浏览器滚动效果的不一致,和高度的控制, 统一放置在iframe中实现控制
    这里写图片描述
    直接滚动iframe来实现操作word的浏览,同时放出weboffice的全屏功能,方便编辑文档的方便.因为全屏时开发完成后提的功能,当时没有详细研究文档中是否有具体接口所以直接把菜单栏隐藏的全屏功能放出来使用 ,具体还有打印和打印预览 另存为等等可以查看weboffice的具体接口文档
    这里写图片描述
    提供资源下载地址(因为开发时,csdn资源比较好,苦于c币原因,无奈积分下载)
    原生接口的saveAsPDF不能用的原因,是缺少TrustedPDF插件原因,后来点聚在收费的weboffice中才提供原生word转PDF,所以在上传时的转换WORD为PDF的想法破灭了(POI转换过于影响样式放弃,libreoffice转换简单,但是linux配置麻烦,暂时打印和预览还是通过weboffice重新加载word后使用ocx的打印和预览功能)
    weboffice6的安装程序和js封装实例https://download.csdn.net/download/x308561498/10597330

    展开全文
  • web Office Apps 无法在线预览问题

    千次阅读 2012-03-12 13:52:44
    安装部署完office web apps ,在sharepoint 2010浏览器中浏览Word提示:“由于出现意外错误,Word Web App 无法打开此 文档 进行查看。 要查看此 文档,请在Microsoft Word 中打开它。” 系统环境:win2008r2 + ...

    安装部署完office web apps 后,在sharepoint 2010浏览器中浏览Word提示:“由于出现意外错误,Word Web App 无法打开此 文档 进行查看。 要查看此 文档,请在Microsoft Word 中打开它。”

    系统环境:win2008r2 + sql2008R2 + sharepoint 2010 + office web apps

      安装部署完office web apps 后,在sharepoint 2010浏览器中浏览Word提示:“由于出现意外错误,Word Web App 无法打开此 文档进行查看。 要查看此 文档,请在 Microsoft Word 中打开它。”,如图:

    只有当sharepoint2010安装在域控制器上才会出在线查看word文件出错.

      第一步:需要从开始菜单进入 SharePoint 2010 Management Shell 在命令窗口执行如下命令:

      $e= Get-SPServiceApplication | where {$_.TypeName.Equals("Word ViewingService 应用程序")}

      $e.WordServerIsSandboxed= $false

      $e.WordServerIsSandboxed

      $p= Get-SPServiceApplication | where {$_.TypeName.Equals("PowerPoint ServiceApplication")}

      $p.EnableSandboxedViewing= $false

      $p.EnableSandboxedEditing= $false

      $p.EnableSandboxedViewing

      $p.EnableSandboxedEditing

      #(Pleaseuse the below script for PowerPointServiceApplication –You need to enter "Y" for the answer of each cmd)

      Get-SPPowerPointServiceApplication| Set-SPPowerPointServiceApplication EnableSandboxedViewing $false

      Get-SPPowerPointServiceApplication| Set-SPPowerPointServiceApplication -EnableSandboxedEditing $false

      或者新建一个记事本文件,将以上内容拷贝,保存后更改文件后缀为 .ps1 例如 temp.ps1

      然后从开始菜单进入 SharePoint 2010 Management Shell 在命令窗口输入e:\temp.ps1

      第二步:用记事本打开 c:\windows\system32\inetsrv\config\applicationHost.config 文件

      在</dynamicTypes>的前面加入<add mimeType="application/zip"enabled="false" />,保存。

      注意事项:

      1.在管理中心网站上的“应用程序管理”部分,单击“管理服务应用程序”右侧可以看到类型名

      例如英文版的类型名是 "Word Viewing Service Application" 中文版是

      "WordViewing Service 应用程序" 请对照修改命令。

      2.如果要使系统支持powerpoint 对于所有提问请回答 Y 是

      3.以前上传的word文件需要重新上传,才能使用

      4.office web apps 不支持 excel97-2003 格式文件在线浏览编辑

     

    展开全文
  • office online server实现文档的预览编辑

    万次阅读 热门讨论 2018-10-21 10:51:15
    最近项目中需要用到office文件在线编辑功能,然而很多解决方案都是收费的,于是决定采用微软免费的microsoft office online 2016和wopi 协议来实现。wopi 协议 WOPI的英文全称是“Web Application Open Platform ...

    最近项目中需要用到office文件在线编辑功能,然而很多解决方案都是收费的,于是决定采用微软免费的microsoft office online 2016和wopi 协议来实现。

    wopi 协议

    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 。

    Office开发团队对WOPI的介绍:http://blogs.msdn.com/b/officedevdocs/archive/2013/03/21/introducing-wopi.aspx。
    Office Web Apps服务器概述:http://technet.microsoft.com/en-us/library/jj219437.aspx。

    开发环境

    office online的安装教材网上很多,这里就不再赘述了。安装好office online,然后按照下面的步骤进行wopihost的开发。我用的开发环境是jkd1.8,spring boot。

    我们需要实现3个接口
    GET api/wopi/files/{name}
    GET api/wopi/files/{name}/contents
    POST api/wopi/files/{name}/contents

    其中第一个接口获取文件的信息,返回的是json数据格式,第二个是获取文件流,第三个是保存修改文件。

    接口实现

    先看下获取文信息接口的实现:

    @GetMapping("/files/{name}")
    public void getFileInfo(HttpServletRequest request, HttpServletResponse response) {
        String uri = request.getRequestURI();
        FileInfo info = new FileInfo();
    
        try  {
            // 获取文件名, 防止中文文件名乱码
            String fileName = URLDecoder.decode(uri.substring(uri.indexOf("wopi/files/") + 11), CHARSET_UTF8);
            if (fileName != null && fileName.length() > 0) {
                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));
                }
            }
    
            ObjectMapper mapper = new ObjectMapper();
            response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
            response.getWriter().write(mapper.writeValueAsString(info));
        } catch (Exception e) {
            logger.error("getFileInfo failed, errMsg: {}", e.toString());
            e.printStackTrace();
        }
    }
    

    然后是获取文件流接口的实现:

    @GetMapping("/files/{name}/contents")
    public void getFile(@PathVariable String name, HttpServletResponse response) {
        // 文件的路径
        String path = filePath + name;
        File file = new File(path);
        String filename = file.getName();
    
        try (InputStream fis = new BufferedInputStream(new FileInputStream(path));
             OutputStream toClient = new BufferedOutputStream(response.getOutputStream())) {
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            // 清空response
            response.reset();
    
            // 设置response的Header
            response.addHeader("Content-Disposition", "attachment;filename=" +
                    new String(filename.getBytes(CHARSET_UTF8), "ISO-8859-1"));
            response.addHeader("Content-Length", String.valueOf(file.length()));
    
            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
            toClient.write(buffer);
            toClient.flush();
        } catch (IOException e) {
            logger.error("getFile failed, errMsg: {}", e.toString());
            e.printStackTrace();
        }
    }
    

    保存文件修改的接口实现:

    @PostMapping("/files/{name}/contents")
    public void postFile(@PathVariable(name = "name") String name, @RequestBody byte[] content) {
        // 文件的路径
        String path = filePath + name;
        File file = new File(path);
    
        try (FileOutputStream fop = new FileOutputStream(file)) {
            fop.write(content);
            fop.flush();
        } catch (IOException e) {
            logger.error("postFile failed, errMsg: {}", e.toString());
            e.printStackTrace();
        }
    }
    

    ###接口访问

    访问http://owas.contoso.com/hosting/discovery,owas.contoso.com是配置的office online的域名,当然也可以通过IP访问,请换成自己的地址,如图:
    这里写图片描述

    在上面可以找到对应的文件类型的请求路径。然根据上面的URL+ WOPISrc=wopiHost的接口地址
    就可以实现服务了。

    例如word文档预览
    http://[owas.domain]/wv/wordviewerframe.aspx?WOPISrc=http://[WopiHost.domain]:8080/wopi/files/test.docx
    这里写图片描述

    word文档编辑
    http://[owas.domain]/we/wordeditorframe.aspx?WOPISrc=http://[WopiHost.domain]:8080/wopi/files/test.docx
    这里写图片描述

    代码已上传github,有用的话记得start一下啊__
    地址 https://github.com/ethendev/wopihost

    注意:web app上没有保存按钮,是自动保存的


    参考资料
    Office Online Server 概述
    部署 Office Online Server
    Windows Server 2012 R2 创建AD域
    WOPI协议信息

    Office Online Server下载地址
    可以从批量许可服务中心 (VLSC) 下载 Office Online Server。
    备用下载地址:http://www.0daydown.com/10/630107.html。

    展开全文
  • 普通的MS Office Word只能在本地磁盘上打开和编辑保存,这使得程序员在开发项目时受到很多的约束,许多的功能无法实现或者无法达到理想的效果。下面我就简单的和大家分享一下如何实现Word文档的在线打开、编辑和...

    普通的MS Office Word只能在本地磁盘上打开编辑保存,这使得程序员在开发项目时受到很多的约束,许多的功能无法实现或者无法达到理想的效果。

    下面我就简单的和大家分享一下如何实现Word文档在线打开编辑和保存。

    第一步:请先安装PageOffice的服务器端的安装程序,之后在WEB项目下的“WebRoot/WEB-INF/lib”路径中添加pageoffice.cab和pageoffice.jar(在www.zhuozhengsoft.com网站的“下载中心”中可下载相应的压缩包,解压之后,双击运行Pageoffice服务器端安装程序setup.exe,之后将pageoffice.cab和pageoffice.jar文件拷贝到该目录下就可以了)文件。

    第二步:修改WEB项目的配置文件,将如下代码添加到配置文件中:

    <!-- PageOffice Begin -->

    <servlet>

    <servlet-name>poserver</servlet-name><servlet-class>com.zhuozhengsoft.pageoffice.poserver.Server

    </servlet-class>

    </servlet>

    <servlet-mapping>

    <servlet-name>poserver</servlet-name>

    <url-pattern>/poserver.do</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

    <servlet-name>poserver</servlet-name>

    <url-pattern>/pageoffice.cab</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

    <servlet-name>poserver</servlet-name>

    <url-pattern>/popdf.cab</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

    <servlet-name>poserver</servlet-name>

    <url-pattern>/sealsetup.exe</url-pattern>

    </servlet-mapping>

    <servlet>

    <servlet-name>adminseal</servlet-name>

    <servlet-class>com.zhuozhengsoft.pageoffice.poserver.AdminSeal

    </servlet-class>

    </servlet>

    <servlet-mapping>

    <servlet-name>adminseal</servlet-name>

    <url-pattern>/adminseal.do</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

    <servlet-name>adminseal</servlet-name>

    <url-pattern>/loginseal.do</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

    <servlet-name>adminseal</servlet-name>

    <url-pattern>/sealimage.do</url-pattern>

    </servlet-mapping>

    <mime-mapping>

    <extension>mht</extension>

    <mime-type>message/rfc822</mime-type>

    </mime-mapping>

    <context-param>

    <param-name>adminseal-password</param-name>

    <param-value>123456</param-value>

    </context-param>

    <!-- PageOffice End -->

    第三步:在WEB项目的WebRoot目录下添加文件夹存放word模板文件,在此命名为“doc”,将要打开的Word文件拷贝到该文件夹下,我要打开的Word文件为“test.doc”。

    第四步:在WEB项目的WebRoot目录下添加动态页面word.jsp。在该页面后台中添加自定义标签库:“<%@ taglib uri="http://java.pageoffice.cn" prefix="po"%>”,并引入PageOffice类库:“<%@page import=”com.zhuozhengsoft.pageoffice.*”%>”。之后在前台HTML页面中添加PageOfficeCtrl控件:“<po:PageOfficeCtrl id="PageOfficeCtrl1"></po:PageOfficeCtrl>”,并设置控件所在层的大小。

    第五步:在word.jsp的后台页面,利用PageOfficeCtrl控件在线打开Word文档,代码如下:

    //********************卓正PageOffice组件的使用**********************

    PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);

    poCtrl1.setServerPage("poserver.do"); //此行必须

    poCtrl1.setSaveFilePage("SaveFile.jsp");//如要保存文件,此行必须

    poCtrl1.addCustomToolButton("保存", "Save()", 1);//添加自定义工具栏按钮

    //打开文件,webOpen()方法中的三个参数分别为:要打开的文件路径、打开模式、打开的操作人,其中文件路径既可是相对路径也可是绝对路径

    //绝对路径:String filePath = request.getSession().getServletContext().getRealPath("doc/test.doc");

    String filePath = "doc/test.doc";//相对路径

    poCtrl1.webOpen(filePath, OpenModeType.docNormalEdit, "张三");

    poCtrl1.setTagId("PageOfficeCtrl1"); //此行必须

    再在Word.jsp的前台页面添加JS函数,执行保存操作,代码如下:

    function Save() {

    document.getElementById("PageOfficeCtrl1").WebSave();

    }

    如上所述,简单的就实现了Word文档在线打开操作。接下来开始编写保存页面。

    第六步:在WEB项目的WebRoot目录下添加动态页面SaveFile.jsp,在后台页面中编写代码处理要保存的Word文档,代码如下:

    FileSaver fs = new FileSaver(request, response);

    //保存Word文档到相应的磁盘路径中

    fs.saveToFile(request.getSession().getServletContext().getRealPath("doc/") + "/" + fs.getFileName());

    //fs.showPage(300,300);//可在前台弹出相应大小的窗口,并在上面显示想要显示的信息内容

    fs.close();

    至此,就简单的实现了Word文档的现在打开编辑和保存了。

    方案总结:

    上述的示例主要是借助了PageOffice开发平台的PageOfficeCtrl控件,利用该控件还可实现Word文档内容的提交、添加手写批注、加盖电子印章、Word文档到PDF文档的转换等功能。另外,在PageOffice平台下还可实现Excel、PPT、PDF等文档在线打开编辑保存等等各种操作,很好地解决了开发OA系统的程序员的一大技术难题。

    展开全文
  • office 控件编辑 基本介绍 iWebOffice系列文档控件,是江西金格网络科技有限责任公司经过两年的完全自主开发设计,拥有自主知识产权的中间件软件,于2003年3月取得了国家软件著作权保护,于2003年12月取得了江西...
  • 目 录       一、工作原理... 5 1.1  开发流程... 5 1.2  WEB页面调用控件:. 6 二、接口说明... 7 2.1  接口... 7 2.1.1  AboutBox. 7 2.1.2  AcceptAllRevisions. 7 2.1.3  CloseD
  • WebOffice使用一

    千次阅读 2014-12-22 14:49:37
    weboffice是处理办公软件OFFICE,wps文档的一款由点聚软件开发的一款插件,可以应用VS开发环境运行,主要可以处理word,excel,ppt等文档。 2.如何使用weboffice 2.1.使用前提:安装完整版的Microsoft OFFICE或WPS,...
  • 使用 WebBrowser 的 Navigate 方法打开 Office 文档时,出现以下问题: 问题: Office 文档并没有正确嵌入到 WebBrowser 控件中,反而被系统自带的 Office 应用程序打开了(等同于双击 Office 文档); 原因:是...
  • 点聚weboffice使用总结

    万次阅读 热门讨论 2014-01-10 12:06:55
    近来的项目时在公司做内容管理系统,涉及到很多浏览器端的展示,公司统一用的是点聚的weboffice控件,以前没用过,摸索了一段时间,总结和记录一下在使用的过程中遇到的问题。   1. 安装 安装的过程还是很简答的...
  • Office Web Apps 错误日志

    千次阅读 2018-02-02 13:37:00
    前言 最近一直在用Office Web Apps,使用过程会有各种各样的错误,众所周知,sharepoint的错误都在15/Logs下面保存错误日志,那么OWA呢? 经过查找,发现Office Web Apps也有自己的错误日志,如果我们遇到错误了,...
  • 金格插件使用心得

    万次阅读 2012-12-25 09:52:47
    金格科技-iWebOffice2009全文批注实例  if (vIndex==1){   WebOpenLocal(); //打开本地文件  }  if (vIndex==2){  ... //保存本地文件  }  if (vIndex==3){  SaveDocument(); //保存
  • WebOffice开发系列指南...WebOffice文档控件技术交流和版本发布 发表回复 17 篇帖子 • 分页: 1 / 2 • 1, 2 WebOffice开发系列指南 由 hangel » 2010-07-12 11:33 WebOffice开发系列01-自动下载安装组
  • Java调用PageOffice实现在线编辑保存Word文件(以jsp调用为例,支持SSM、SSH、SpringMVC等流行框架)1. 下载PageOffice开发包:http://www.zhuozhengsoft.com/dowm/ 下载PageOffice for JAVA2. 以Myeclipse为例,...
  • Office web app提供了很全面的功能,不仅可以使用sharepoint查看文档,也可以将其集成到我们自己的项目中。 如果项目只用到了文档的在线预览功能,直接使用owa服务生成的url或者iframe标签就能够在网页中浏览office...
  • Javascript调用: function openFile() { var openDocObj = new ActiveXObject("SharePoint.OpenDocuments.1"); openDocObj.EditDocument("http://server:port/webdav/test.doc");} 1)在web上编集,创建of
  • 利用pageoffice实现在线处理excel文档上周开组会,发现理解错导师的意思了,老师当然希望我能自动的爬取那些信息,但是现在要的很急,希望以半自动的方式去得到这些数据存到数据库,所以这周一直在弄这个。...
  • office online server2016详细安装步骤及问题总结

    万次阅读 热门讨论 2018-08-27 13:33:59
    自己一直在研究office online server 2016这款在线浏览文档的软件,其中遇到了很多问题,以下是自己综合网上的资料和自己的搭建过程写出来的安装步骤,亲测可用,值得注意的是在安装除word格式的文件其他都可以...
  • 金格插件WebOffice2015使用体会

    万次阅读 2019-04-09 15:24:30
    最近一段时间,在项目中集成了WebOffice2015的插件。有些心得体会,在这里和大家分享一下,不喜勿喷~~~~~~~~ 原项目中之前上传和下载附件集成的是WebOffice2003,由于新需求是实现文档(word)的在线编辑功能,所以...
  • java开发在线打开编辑保存word文件

    千次阅读 2018-05-03 16:48:47
    Java调用logo是“P”图标的第三方插件,实现在线编辑保存Word文件(以jsp调用为例,支持SSM、SSH、SpringMVC等流行框架)工具/原料Eclipse或MyEclipse等java IDE环境logo是“P”图标的第三方插件方法/步骤下载logo是...
  • Microsoft Office Excel 不能访问文件“D:\WWWRoot\KOBELCOSH\WebUI\ExcelTemplate\QUOTE5.xls”。 可能的原因有: 1 文件名称或路径不存在。 2 文件正被其他程序使用。 3 您正要保存的工作簿与当前打开的工作...
1 2 3 4 5 ... 20
收藏数 13,487
精华内容 5,394
关键字:

weboffice文件修改后无法保存