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地址编辑控件,只是系统提供的控件不能设置只读效果.网上找了下资料,封装了一下,自己迂回一 ...
随机推荐
- 不得不喷一下中控科技,ZKT,恶心的中控,售后技术和屎一样,半年不见人。
要做一个指纹考勤机和后台通信写入到mysql.在淘宝看了好多款,于是决定用指纹考勤机w6.卖家当时说支持二次开发,给我发的sdk.于是买了一台测试.机器来了开始测试,使用发的demo不能使用,于是去中 ...
- springMVC中 request请求数据绑定到Controller入参 过程剖析
前言:Controller方法的参数类型可以是基本类型,也可以是封装后的普通Java类型.若这个普通Java类型没有声明任何注解,则意味着它的每一个属性都需要到Request中去查找对应的请求参数.众 ...
- ViewPager适配器FragmentStatePagerAdapter 与FragmentPagerAdapter
使用FragmentPagerAdapter存在删除dataSet顺序错乱的问题 改用FragmentStatePagerAdapter
- php抽奖代码
1.经典概率算法抽奖 $tmpItems = ['电脑'=>10, '相机'=>50, '100元现金'=>500]; $proSum = array_sum($tmpItems); ...
- 【leetcode】Merge Sorted Array
题目描述 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assu ...
- C#创建文件夹,往里追字符串。
/// <summary>写文本日志</summary> /// <param name="StrMessage">日志消息</param ...
- Ubuntu——apt && dpkg参考
一.apt apt-cache search # ------(package 搜索包) apt-cache show #------(package 获取包的相关信息,如说明.大小.版本等) sud ...
- Swift -运算符和循环结构
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #4dbf56 } p.p2 { margin: 0.0px 0. ...
- HDFS操作
HDFS操作 1.shell 1.1 创建目录 hadoop fs -mkdir 目录名(其中/为根目录) 1.2 遍历目录 hadoop fs -ls 目录名 1.3 删除目录 hadoop fs ...
- android textView 总是有paddingtop怎么解决
android的TextView即使设置wrap_content,如果打开开发者模式->显示布局边界,能看到textView还是存在paddingTop, 解决方法: android:inclu ...