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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM