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, , 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);

ntko office在线编辑控件问题记录的更多相关文章

  1. NTKO OFFICE文档控件

    目录 前言 什么是ntko 准备工作 实战演练 总结 一.前言 Web开发中经常需要用到在线处理office文档的功能,现在市面上有一些常用的Web页面调用显示Office的控件技术,用起来很方便. ...

  2. 基于MVC4+EasyUI的Web开发框架经验总结(5)--使用HTML编辑控件CKEditor和CKFinder

    Web开发上有很多HTML的编辑控件,如CKEditor.kindeditor等等,很多都做的很好,本文主要介绍在MVC界面里面,CKEditor的配置和使用.CKEditor的前身是FCKEdito ...

  3. C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面

    个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...

  4. Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面 z

    http://www.cnblogs.com/zuowj/p/4504130.html 不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景 也最为 ...

  5. 编辑控件CKEditor和CKFinder

    -使用HTML编辑控件CKEditor和CKFinder Web开发上有很多HTML的编辑控件,如CKEditor.kindeditor等等,很多都做的很好,本文主要介绍在MVC界面里面,CKEdit ...

  6. 浅谈基于WOPI协议实现跨浏览器的Office在线编辑解决方案

    如今,基于Web版的Office 在线预览与编辑功能已成为一种趋势,而关于该技术的实现却成为了国内大部份公司的技术挑战,挑战主要存在于两方面: 其一:目前国内乃至微软本身,还没有相对较为完善的解决方案 ...

  7. 分享一个Winform里面的HTML编辑控件Zeta HTML Edit Control,汉化附源码

    我们知道,Web开发上有很多HTML的编辑控件,如FCKEditor.CKEditor.kindeditor等等,很多都做的很好,而虽然Winform里面有WebBrowser控件,但是默认这个控件是 ...

  8. [转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  9. IP编辑控件(因为封装的是系统自带控件,所以也使用了CreateSubClass,不过为啥要封装CN_COMMAND和CN_NOTIFY不是很明白)

    最近需要用一个IP输入控件,网上找了几个,都不符合效果,有些还有一些奇怪的Bug.后来发现原来系统已经提供了IP地址编辑控件,只是系统提供的控件不能设置只读效果.网上找了下资料,封装了一下,自己迂回一 ...

随机推荐

  1. Servlet调用过程

    (1)在浏览器输入地址,浏览器先去查找hosts文件,将主机名翻译为ip地址,如果找不到就再去查询dns服务器将主机名翻译成ip地址. (2)浏览器根据ip地址和端口号访问服务器,组织http请求信息 ...

  2. 查看sqlserver被锁的表以及如何解锁

    select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran ...

  3. iOS 系统数字键盘左下角加确定按钮

    首先在 viewWillAppear 方法中注册监听相应的键盘通知,并且要在 viewWillDisappear 方法中注销通知- (void)viewWillAppear:(BOOL)animate ...

  4. windows系统 SVN出现 can't open file‘\XXX\txn-current-lock’ 拒绝访问 问题处理

    问题描述:  在新建的svn目录下,提交文件出现 如图错误提示.

  5. Linux的简单介绍和常用命令的介绍

    Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...

  6. Win10 UI入门RelativePanel(2)

    自适应 1) Gif: 添加动画 2)

  7. Dev Cpp 输出中文字符问题

    最近 c++ 上机作业,vc++6.0 挂了没法用,只好用 Dev Cpp 先顶替一下,然而在遇到输出中文字符的时候出现了乱码的情况,但这种情况又非常诡异.于是简单了解了一下写成此博客. [写在前面] ...

  8. nodejs复习05

    stream 可读流 fs.pause()方法会使处于流动模式的流停止触发data事件,切换到非流动模式并让后续数据流在内部缓冲区 var fs = require('fs') var rs = fs ...

  9. Mac下搭建php开发环境[翻译]+自己总结(红字)

    原英文链接:http://www.codeweblog.com/mac-os-x-to-configure-apache-php-mysql/ Mac OS X 内置了Apache 和 PHP,这样使 ...

  10. Vue - 事件绑定

    1.内联方式: A:将事件处理器绑定到一个方法中,以下所有事件都以click事件作为案例 注意:内联方式下事件处理器只能绑定一个方法,要是想要绑定多个方法,依旧还是使用js中的addEventList ...