NTKO OFFICE文檔控件


目錄

  • 前言
  • 什么是ntko
  • 准備工作
  • 實戰演練
  • 總結

一、前言

  Web開發中經常需要用到在線處理office文檔的功能,現在市面上有一些常用的Web頁面調用顯示Office的控件技術,用起來很方便。 有一些第三方ActiveX瀏覽器控件:比如科瀚的SOAOffice中間件、卓正軟件的pageoffice控件、WebOffice控件還有我這篇文 章所要說到的NTKO。

二、什么是NTKO

  通俗易懂來講就是能夠直接在瀏覽器上查看編輯word文檔,並保存到web服務器上的控件。

  借用官方的話,是能夠在IE,火狐,谷歌等內核瀏覽器中直接編輯WPS,MS Office ,金山電子表等文檔並保存到web服務器上,實現文檔和電子表格的統一管理。並具備痕跡保留、模板套紅、二維碼、pdf及tif閱讀等辦公自動化系統的必 備功能。大家可以具體查看官網釋義。

優點:

  1.   能夠支持跨瀏覽器編輯文檔。
  2.   支持多種開發語言(asp、asp.net、jsp、php、vb.net、c#等)。
  3.   支持多線程上傳下載等

缺點:

  1.   打開文檔速度有點慢,可能和電腦性能有關系。
  2.   目前功能還不完善,暫時沒有SOAOffice提供的功能多。

三、准備工作

  測試環境:瀏覽器:IE7及以上;操作系統:Windows操作系統;本地Office:Office 2003-2013;(聽說ntko還不支持office 2016)注意Office必須是完整版的

    官方提供的js,css,cab:  1.ntko.js  2.ntkoofficecontrol.js   3.ComFun_OA8.js  4.OfficeControl.cab  5.Css_One.css  (這些官網都能下載到) 

  .cab文件百度百科的意思是:windows的壓縮格式,用winrar可以打開,但有些是經過加密的,用一般的壓縮程序都是打不開的。這里的OfficeControl是必不可少的,他是Web頁面調用本地服務器的接口。

  由於NTKO是ActiveX控件,通過瀏覽器操作本地控件時,需要通過操作的用戶權限必須是管理員用戶,這樣才能正常加載。因此通過將應用系統站點加入到IE瀏覽器可信任站點中可以解決這個問題。設置完成之后重啟瀏覽器

  如果出現不能裝載文檔控件,請在檢查瀏覽器的選項中檢查瀏覽器的安全設置。官網的解決辦法如下:

 

此問題和控件本身無關,為了解決NTKO不能自動裝載的問題,我們先來看看瀏覽器對象所涉及到的步驟。

  首先是HTML中引用的代碼:

<object id="TANGER_OCX" classid="clsid:C9BC4DFF-4248-4a3c-8A49-63A7D317F404" codebase="/path/to/OfficeControl.cab#version=4,0,0,5" width="100%" height="100%">

  1.id="TANGER_OCX"   是標識控件js的編程標識,通過documnet.all("TANGER_OCX")得到控件的引用。

  2.clsid:C9BC4DFF-4248-4a3c-8A49-63A7D317F404  標識ntko文檔的唯一標識,瀏覽器通過clsid來判定訪問網頁的客戶機有沒有安裝ntko。

  3.codebase  這個不用說了,看一下大概知道這是放置文件路徑的意思,version代表控件版本號。

  出現裝載文檔控件,請在檢查瀏覽器的選項中檢查瀏覽器的安全設置問題大概有下面幾個原因

    1)本地Internet選項中的安全設定,在當前區域禁止下載已簽名的ActiveX控件;
    2)引用控件的網頁中,<object 標記中的codebase屬性指定不正確,導致瀏覽器無法下載OfficeControl.cab文件;
    3)服務器上的OfficeControl.cab被破壞,失去正確的簽名,或者使用了不正確的版本;
    4)雖然服務器上的OfficeControl.cab正確,但是瀏覽器下載的有問題。這個可能會因為某些WEB服務器的mime的錯誤配置引起,導致服務器將OfficeControl.cab不以二進制文件的形式發送給瀏覽器;
    5)本地Internet選項中的安全設定,在當前區域不允許運行ActiveX控件和插件;
    6)還有可能是由於微軟的補丁引起,或者其他防病毒軟件或者過濾軟件阻止了控件安裝

  如果還有其他問題,可以登錄官網問題處理解決。

四、實戰演練

  下面就利用我最近在做的一個項目實例講一下ntko的原理,功能需求就貼圖顯示把。

首先是在頁面中新增數據,提交操作后往對應數據庫數據表中插入數據。

圖1

其次在提交操作提示成功后,在申報材料下填報,點擊填報后,跳轉申報表頁面,調用ntko控件,如圖3。

圖2

申報表頁面如下圖,因為是調用的本地Office,所以頁面上保留Office中所帶有的功能,包括常見的字體設置,插入,設計等等。

圖3

  至於在線編輯word中的內容是數據庫中對應字段通過書簽形式綁定到word模板中,如圖4。在線編輯首先需要創建一個空word模板,當然word中樣式自己排版,然后將需要綁定字段的地方插入書簽,書簽是對應數據表中的字段綁定。

圖4

  最后在html頁面 首次加載頁面js中引用一下方法,有些不懂的釋義可以查閱官網Api了解。

復制代碼
 function window_onload() { var DocPrintUrl = '<%=ViewState["DocPrintUrl"].ToString() %>';//獲取doc模板地址 //var DocPrintUrl = 'PX_OpenFile_List.aspx'; OpenEditOffice(DocPrintUrl, "1");//調用ntko.js中編輯文檔方法  SetReviewMode(true);//修訂模式 setShowRevisions(false);//顯示痕跡  TANGER_OCX_OBJ.Menubar = true;//是否顯示菜單欄 TANGER_OCX_OBJ.TitleBar = true;//是否顯示標題欄     SetBookmarkValue("ZX_QYMC", '<%=ViewState["UnitName"].ToString()%>');//往word書簽中增加內容 }
復制代碼

五、總結

  NTKO以及其他第三方ActiveX控件帶給我們很大的便利性,它能夠自動識別修改過得文檔,提示保存服務器中,免去了之前下載----修改 ----上傳的復雜過程,實現了在線編輯,在線預覽,電子印章,附件管理,大文件上傳等等功能。但也有不少缺點,在Html,Css以及桌面逐漸轉換,控 件也有可能早晚會被淘汰。

 

NTKOOFFICE文檔控件使用說明

第一章 文檔控件運行環境
目前NTKO OFFICE文檔控件只支持windows操作系統的32位標准IE內核瀏覽器,支持的環境如下所示:
操作系統:windows系統; 瀏覽器:IE7-IE11 32位瀏覽器;
本地Office:32位完整版office 2003~office 2010。
第二章 瀏覽器自動加載文檔控件
NTKO OFFICE文檔控件是ActiveX控件,通過瀏覽器操作本地的office,所以說系統用戶的權限必須管理員身份,這樣控件才能正常的加載;還有就是訪問的系統里面有文檔控件,必須將這個系統加入到IE的可信任站點中去;
加入可信任站點如圖:IE工具欄-Internet選項;該保護模式不啟用;注意將https驗證取消,然后點擊添加就行了;

1.0自動加載問題
1.1 NTKO OFFICE文檔控件為何不能自動裝載
控件不能自動加載主要有以下原因導致: 1)本地Internet選項中的安全設定,在當前區域禁止下載已簽名的ActiveX控件; 
2)引用控件的網頁中,<object 標記中的codebase屬性指定不正確,導致瀏覽器無法下載OfficeControl.cab文件;

3)服務器上的OfficeControl.cab被破壞,失去正確的簽名,或者使用了不正確的版本; 
4)雖然服務器上的OfficeControl.cab正確,但是瀏覽器下載的有問題。這個可能會因為某些WEB服務器的mime的錯誤配置引起,導致服務器將OfficeControl.cab不以二進制文件的形式發送給瀏覽器; 
5)本地Internet選項中的安全設定,在當前區域不允許運行ActiveX控件和插件; 
6)還有可能是由於微軟的補丁引起,或者其他防病毒軟件或者過濾軟件阻止了控件安裝;
1.2 不能加載文檔控件的解決步驟?
1) 確認本地Internet選項中的安全設定中,允許下載已簽名的ActiveX控件,並允許運行ActiveX控件和插件。 
2)確認引用控件的網頁中,<object 標記中的codebase=部分,正確指向了服務器上的
OfficeControl.cab文件的URL[相對當前網頁或者相對服務器根]。

3)從瀏覽器地址欄直接輸入服務器上的OfficeControl.cab文件的URL,包含主機名,確認瀏覽器出現下載提示並且在下載保存后的
OfficeControl.cab文件上,點擊右鍵看屬性,在出現的對話框中具有“數字簽名”,且簽名正確。 
4)如果以上方法還不能解決問題,並且您的系統安裝了“微軟累積安全更新 MS05-052補丁”,請嘗試如下步驟:
警告:如果使用注冊表編輯器或其他方法錯誤地修改了注冊表,則可能導致嚴重問題。這些問題可能需要重新安裝操作系統才能解決。 1、單擊“開始”,單擊“運行”,鍵入 Regedit.exe,然后單擊“確定”。  2、找到以下注冊表子項:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility  3、右鍵單擊“ActiveX Compatibility”,查找NTKO OFFICE文檔控件的
CLSID:{C9BC4DFF-4248-4a3c-8A49-63A7D317F404},如果該項目存在,右鍵單擊右邊的“Compatibility Flags”項目,然后單擊“修改”。在“數值數據”框中,選擇16進制,輸入00800000,然后單擊“確定”。
4、如果該NTKO OFFICE文檔控件的CLSID不存在,則右鍵單擊“ActiveX Compatibility”,指向“新建”,單擊“項”,鍵入NTKO OFFICE文檔控件的
CLSID:{C9BC4DFF-4248-4a3c-8A49-63A7D317F404},然后按 Enter。 
5、右鍵單擊您在步驟 4 中創建的項,指向“新建”,然后單擊“DWORD 值”。 
6、鍵入 Compatibility Flags,然后按 Enter。  7、右鍵單擊“Compatibility Flags”,然后單擊“修改”。 
8、在“數值數據”框中,選擇16進制,輸入00800000,然后單擊“確定”。  9、退出注冊表編輯器。 
5)如果以上方法還不能解決問題,嘗試暫時關閉防病毒軟件或者其他過濾軟件再進行安裝。  6)如果還是不能解決問題,可能是機器配置被破壞,可以嘗試進行手工安裝。具體請參考相關文檔。

2.0加載文檔時出現“下載文檔數據失敗”對話框是什么原因,如果解決?
錯誤原因是后台url數據錯誤。可以嘗試從瀏覽器打開url,如果是后台錯誤,可以看到詳細的錯誤信息。如果瀏覽器可以打開,控件不能打開,則可以試試設定控件屬性
<param name=”IsUseUTF8URL” value=”-1”>
3.0加載文檔時出現“您沒有正確安裝OFFICE,或者請求創建一個系統不支持的OLE文檔類型”錯誤,請給出詳細解決過程?
這個錯誤是因為接口沒有注冊。跟控件本身無關。可以嘗試
1、打開windows的“寫字板”應用程序,選擇插入word文檔對象。如果這個出錯,可以確定是office安裝問題,或者是因為ole32.dll沒有注冊。
2、可以嘗試在命令行運行“regsvr32.dll”,再試試。 3、如果不行,可以徹底卸載office,重新安裝。
4.0控件為什么有時加載文檔顯示空白,有時可正常加載?如何解決?
這個可能是在body中直接調用
OpenFromUrl/BeginOpenFromUrl,但此時控件並未完全初始化/加載完畢,所以出現空白。
解決:可以在<body onload=”„”>中調用js函數,這樣可以確保在瀏覽器加載控件完畢之后,才在該js函數中調用OpenFromUrl/BeginOpenFromUrl,這樣就可以解決了
5.0文件存取錯誤
首先按照備注操作,將系統加入到IE的可信站點中去;如果加入了可信站點還是報文件存取錯誤的話那就是本機office的問題了,本機office是精簡版的office,卸載了本機的然后重裝一個完整的office; 1.環境問題,按照以下步驟檢查
1)在寫字板插入word對象試試,如果不報錯,說明office是正確安裝的
2)打開命令行,然后輸入regsvr32 ole32.dll (win7需要這樣打開:所有程序附件命令行#鼠標右鍵以管理員身份執行)
3)如果1)2)都沒有問題,可以打開任務管理器看看是否有未結束的WINWORD.EXE EXCEL.EXE進程,關閉試試

4)刪除normal.dot normal.dotx試試,這兩個文件是office的模板文件,在目錄C:\Documents and Settings\當前用戶\Application Data\Microsoft\Templates下 

5)windows7還可以嘗試把OA或系統的IP加入信任站點,取消保護模式試試
6)如果以上方法都不行,請重新安裝office試試(推薦完全安裝)
只有部分文檔打開時報錯 2.文檔被損壞
1)由於未知原因,文檔被損壞,這時,可以把從本地打開這個文檔,另存一份出來試試控件是否能打開
 件存取錯誤的原因有下面幾種:
1:文檔不是一個標准的office/wps文檔.(這種你可以通過指定強制使用office/wps的某個程序來打開.)
控件對象.OpenFromUrl(url,"word.document");//第2個參數"word.document"強制調用word打開該文檔,也可以為"excel.sheet"等.
2:文檔數據被破壞,沒有辦法解決.
3:用office2003打開office2007的文檔.
解決方法是:在服務器保存用office2003上創建的空白文檔,客戶端新建文檔時默認打開服務器上的這個空白文檔,編輯保存后都是2003的文檔格式.這樣就保證了保證服務器上的文檔都是2003格式.
4:本機office沒有安裝好,請重新完整的安裝office.
6.0使用文檔控件打開服務器上面的文檔時,出現文件傳輸錯誤有哪些原因導致?
控件對象.openFromUrl(url);參數url必須能夠返回標准文檔的二進制數據流。它可以直接指向服務器上的一個word文檔或者頁面(這個頁面讀取文檔的數據流,並返回給客戶端)。 出現錯誤分為下面幾種情況

1:url錯誤。如果url沒有問題在瀏覽器的地址欄直接url有問題,控件無法獲取文檔數據,就會提示“文件傳輸錯誤”。
2:編碼問題。比如url中帶有中文字符,瀏覽器對url編碼導至url被破壞。服務器根據被破壞的url當然也不能返回正確的word二進制流。可以通過設置控件的isuseutf8url=-1(即使用utf8對url編碼)。有的時候即使設置了isuseutf8url=-1也不能解決問題。根據經驗,可以調用url=escape(url);來重新對url編碼一次,然后再調用openFromUrl(url)。 3:服務器設置本身就不支持中文的url。比如tomcat服務器,是可以通過服務器配置文件來設置url編碼,有的編碼格式本來就不支持中文。這種情況就需要重新設置能夠支持中文的url編碼格式。 保存文檔回服務器時報“文件傳輸錯誤” 解決方案
SaveToUrl()方法的返回值就是url指向頁面的執行完后整個頁面的內容.如果后台url程序有錯誤,保存不成功.控件就會提示"文件傳輸錯誤",並且SaveToUrl()方法的返回值中就包含了錯誤信息,可以通過類似下面的代碼查看錯誤信息,並對url頁面進行排錯: var resTTML = 控件對象.saveToUrl(url,..); alert(resTTML);
7.0 控件使用一段時間后突然提示"您正在運行的NTKO OFFICE文檔控件是演示版本已經到期,不能繼續使用。"
出現以上問題可能有以下三種情況:
1.用的試用版。我們網站發布的演示版本控件都有一定的試用使用時期。請重新網站下載新的演示版本。 2.密鑰不對。不是我們發布的正式密鑰或者書寫錯誤。 3.密鑰和版本不匹配。正式版本控件和授權密鑰必須一一對應。請參考我們發布產品時附帶的相關文件。 
8.0 檢測其他地方沒有任何問題就是文檔保存的時候出現不知名錯誤?
可能引起的原因就是在:打開文檔Openfromurl第二個參數或者BeginOpenfromURL第三個只讀屬性設置為true,這樣就不能將文檔保存回服務器;所以解決方案就是將這個參數設置為false就可以解決;

9.0當客戶端的office版本含有2003、2007和2010,保存文檔的時候怎樣處理兼容問題
因為低版本的office不能兼容高版本的office文檔格式(如office2003不能打開07和10文檔),所以建議在保存文檔時候可以使用SaveAsOtherFormatToURL方法,該方法用來將文檔保存為其他格式的文件到指定的URL。除第一個參數之外,其他參數的格式以及返回值,和SaveToURL方法的參數一致。


 



免責聲明!

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



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