zoukankan      html  css  js  c++  java
  • ntko office在线编辑控件问题记录

    ntko office在线预览插件 http://www.ntko.com/

    问题:火狐或谷歌下保存报【没有打开的文档】错误,ie正常

    原因:火狐、谷歌、ie的各方法执行文字不同,ie嵌在页面,而火狐和谷歌在控件js回调函数中添加

    解决方法:

    ie在页面直接添加以下代码

      <script language="javascript" type="text/javascript" for="TANGER_OCX" event="OnDocumentOpened(TANGER_OCX_str,TANGER_OCX_obj)">
             TANGER_OCX_OnDocumentOpened(TANGER_OCX_str, TANGER_OCX_obj);
      </script>

    火狐和谷歌需要在控件js ntkoofficecontrol.js 中 if (browser == "firefox")下 ForOndocumentopened="OnComplete3" 中的回调函数OnComplete3方法中添加方法

     document.write('<object id="TANGER_OCX" type="application/ntko-plug"  codebase="/module/ntko/ofctnewclsid.cab#version=5,0,3,0" width="100%" height="750"  ForOndocumentopened="OnComplete3" ForOnSaveToURL="OnSaveToURL" ');

    问题:在线预览pdf文件,报【文件存取错误】

    原因:未添加pdf文件支持

    解决方法:需要添加pdf文件支持,在文件打开,控件加载方法中添加以下代码:(需要有ntkooledocall.cab控件支持,下面的4.0.0.0对应ntkooledocall.cab包中的ntkooledocall.inf文件中的FileVersion=4,0,0,5)

    TANGER_OCX_OBJ.AddDocTypePlugin(".pdf", "PDF.NtkoDocument", "4.0.0.5", "/module/ntko/ntkooledocall.cab", 51, true);

    问题:已添加pdf文件支持,但在ie浏览器下预览时仍然报【文件存取错误】或【文档加载失败】

    原因:后台输出的二进制流方法错误

    解决方法:建议按照以下方式输出二进制流暂未发现问题 需要注意的位置为(如果还有问题,请自行网上查找各文件输出二进制流的方法,注:pdf和word等二进制流不同)

    response.AddHeader("content-type", "application/octet-stream");//指定返回二进制流的类型
    response.AddHeader("Content-Disposition", "inline; filename=" + fileName);
            public void OpenServerFile(string strFilePath,string fileName)
            {
                //读取文档二进制,注意返回的二进制流要是标准性,否则前台可能无法正常打开文档
                //此处简单以打开服务器磁盘上的Word文档为例,实际应用中可从数据库读取、标准Office文档均可
    
                FileInfo finfo = new FileInfo(strFilePath);
                FileStream fs = finfo.OpenRead();
    
                HttpResponse response = System.Web.HttpContext.Current.Response;
                HttpRequest request = System.Web.HttpContext.Current.Request;
    
                response.AddHeader("content-type", "application/octet-stream");//指定返回二进制流的类型
                response.AddHeader("Content-Disposition", "inline; filename=" + fileName);
    
                //若浏览器端返回的显示乱码,则需要考虑编码的选择问题,一般情况下使用UTF-8
    
                byte[] bytes = new byte[(int)fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                fs.Close();
                Response.BinaryWrite(bytes);
                Response.Flush();
                Response.End();
            }

    问题:在火狐和谷歌浏览器下保存文件时 控件js的回调函数中的html返回值为error,且查看浏览器请求返回代码为500,没有进入后台

    原因:在放置控件的form表单上添加了 runat="server" 标记,此标记会对控件客户端提交表单照成影响

    解决方法:去除form表单上的 runat="server" 标记

    问题:在控件加载时有时候加载成功有时候提示【文档加载失败】

    原因:控件没有初始化完毕就执行了加载文档方法

    解决方法:在使用 BeginOpenFromURL 等打开文档方法前需要添加延迟,等待控件加载完毕。如以下代码:

     //延迟加载,需等待控件加载完毕
     setTimeout(function () {
          TANGER_OCX_OBJ.BeginOpenFromURL(URL, true, false);
     }, 1000);    
  • 相关阅读:
    第一阶段-意见评论
    团队冲刺第15天
    团队冲刺第14天
    第十三周进度报告
    团队冲刺第13天
    团队冲刺第12天
    团队冲刺第11天
    SCRUM第二阶段第九天
    SCRUM第二阶段第八天
    SCRUM第二阶段第七天
  • 原文地址:https://www.cnblogs.com/feigao/p/5984833.html
Copyright © 2011-2022 走看看