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, , 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在线编辑控件问题记录的更多相关文章
- NTKO OFFICE文档控件
目录 前言 什么是ntko 准备工作 实战演练 总结 一.前言 Web开发中经常需要用到在线处理office文档的功能,现在市面上有一些常用的Web页面调用显示Office的控件技术,用起来很方便. ...
- 基于MVC4+EasyUI的Web开发框架经验总结(5)--使用HTML编辑控件CKEditor和CKFinder
Web开发上有很多HTML的编辑控件,如CKEditor.kindeditor等等,很多都做的很好,本文主要介绍在MVC界面里面,CKEditor的配置和使用.CKEditor的前身是FCKEdito ...
- C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面
个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...
- Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面 z
http://www.cnblogs.com/zuowj/p/4504130.html 不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景 也最为 ...
- 编辑控件CKEditor和CKFinder
-使用HTML编辑控件CKEditor和CKFinder Web开发上有很多HTML的编辑控件,如CKEditor.kindeditor等等,很多都做的很好,本文主要介绍在MVC界面里面,CKEdit ...
- 浅谈基于WOPI协议实现跨浏览器的Office在线编辑解决方案
如今,基于Web版的Office 在线预览与编辑功能已成为一种趋势,而关于该技术的实现却成为了国内大部份公司的技术挑战,挑战主要存在于两方面: 其一:目前国内乃至微软本身,还没有相对较为完善的解决方案 ...
- 分享一个Winform里面的HTML编辑控件Zeta HTML Edit Control,汉化附源码
我们知道,Web开发上有很多HTML的编辑控件,如FCKEditor.CKEditor.kindeditor等等,很多都做的很好,而虽然Winform里面有WebBrowser控件,但是默认这个控件是 ...
- [转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...
- IP编辑控件(因为封装的是系统自带控件,所以也使用了CreateSubClass,不过为啥要封装CN_COMMAND和CN_NOTIFY不是很明白)
最近需要用一个IP输入控件,网上找了几个,都不符合效果,有些还有一些奇怪的Bug.后来发现原来系统已经提供了IP地址编辑控件,只是系统提供的控件不能设置只读效果.网上找了下资料,封装了一下,自己迂回一 ...
随机推荐
- 解决Java程序连接mysql数据库出现CommunicationsException: Communications link failure错误的问题
一.背景 最近在家里捣鼓一个公司自己搭建的demo的时候,发现程序一启动就会出现CommunicationsException: Communications link failure错误,经过一番排 ...
- [Android Pro] Android开发实践:自定义ViewGroup的onLayout()分析
reference to : http://www.linuxidc.com/Linux/2014-12/110165.htm 前一篇文章主要讲了自定义View为什么要重载onMeasure()方法( ...
- 【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
(转自:http://blog.csdn.net/reille/article/details/7161942) 作者:reille 本博客网址:http://blog.csdn.net/reille ...
- django一些操作命令
1.数据库与class类同步命令 syncdb command is deprecated in django 1.7. Use the python manage.py migrate instea ...
- hbase 遇到过的问题
1:下面这个错误是因为我zookeeper忘了启动了,启动你的zookeeper,重新启动下你的hbase hbase(main):002:0> list TABLE ERROR: Can't ...
- Foreach 原理
public class Person { private string[] friends = { "asf", "ewrqwe", "ddd&qu ...
- 父元素相对定位后,子元素在ie下被覆盖的问题!
<div id="append_parent" style="position: relative;"> <div id="zoom ...
- PPT演示快捷键
序号 快捷键作用 快捷键 1 从头开始放映 Ctrl+F5 2 从当前页开始放映 Shift+F5 3 隐藏/显示鼠标指针 Ctrl+H/U 4 标记笔 Ctrl+P 5 荧光笔 ...
- Pycharm创建py文件时自定义头部模板
File->settings->Editor->File and Code Templates->Python Script #!/usr/bin/env python # - ...
- 阿里开源消息中间件RocketMQ的前世今生-转自阿里中间件
昨天,我们将分布式消息中间件RocketMQ捐赠给了开源软件基金会Apache. 孵化成功后,RocketMQ或将成为国内首个互联网中间件在Apache上的顶级项目. 消息一出,本以为群众的反应是这样 ...