iWebOffice2003/06簡單快速集成指南
來源:中國電子政務網 更新時間:2008-03-11
              

為了幫助開發人員能夠快速將控件集成于系統中,特借本指南為開發人員介紹控件的工作原理和集成的方法。

下面將以iWebOffice2003的演示程序為例給大家做介紹。示例的開發語言為asp,其他開發語言也會順帶提到。

----------------------------------------------------------------------------------------------------------------------

一、控件的工作原理

iWebOffice控件其實是有兩個文件(或者稱兩個控件)組成的。一個用于集成在頁面上的iWebOffice2003.ocx文件和一個用戶后臺服務器上的iMsgServer2000.dllJAVA開發語言下則是DBstep目錄下的iMsgServer2000.class)文件。

控件的工作其實就是前后臺通信和處理的過程。iWebOffice2003.ocx集成在頁面上,通過javascript腳本調用,用于文檔的編輯,以及傳遞信息到服務器;iMsgServer2000.dll在服務器端運行,用于解析iWebOffice2003.ocx控件發過來的信息包,以及將服務器上處理的結果反饋給客戶端的iWebOffice2003.ocx

客戶端控件的函數功能分兩種:

1、              不和服務器交互的功能,這類函數實現一個文檔表面的功能,不需要和服務器端交互(即不向服務器端的處理頁面發數據),如:設置書簽內容、獲取文檔的內容、獲取文檔痕跡、插入本地文檔和圖片等;

2、              另一類是要和服務器交互的功能,這類函數調用時客戶端控件都會將控件中的信息打包發向處理頁面,處理頁面引用服務器端控件來解析傳過來的內容,并進行處理,具體服務器頁面程序執行那端代碼,在我們的示例程序里都有關于具體交互OfficeServer頁面OPTION值的注釋,處理完后將信息通過服務器端控件打包,再發送給客戶端,這類函數需要一個“客戶端”—>“服務器處理頁面”—>“客戶端”的流程才能完成工作,如:打開文檔、保存文檔、插入服務器上的文檔到當前文檔中、套用模版、簽名蓋章等。

 

二、控件的集成步驟

1、 注冊服務器端組件

演示程序包中有一份名稱為《COM組件安裝.doc》的文檔,里面介紹了WINDOWS平臺下如何注冊服務器端組件,請開發人員參考操作。

開發語言為JAVA的話可以不用注冊。只要保持iMsgServer2000.class文件在DBstep目錄下就可以了。

2、 數據庫準備

演示中提供了演示用的數據庫文件,如果希望集成時省點心可以直接用我們提供的表。相信開發之前都會看看演示程序,所以表應該都會有的。使用演示程序提供的表可以方便的使用后面會說到的officeserver文件,不用做大量的修改。開發人員可以先用這些表做集成,等理解了控件的工作方式,可以再使用自己的表。

3、 集成客戶端控件

23739A7E-5741-4D1C-88D5-D50B18F7C347" codebase=" iWebOffice2003.ocx#version=6,0,0,4 " >

在需要進行文檔編輯和保存的頁面上,將上面的代碼放在希望顯示文檔的地方。其中:id是可以開發人員定義的,是指控件在頁面上形成對象的名稱;classid是固定的,是控件的注冊編號;codebase由兩部分組成,codebase=后面到#version之前的部分是控件的下載地址,#version=之后的部分是控件的版本號。控件的下載地址和版本號都務必寫正確,否則可能造成控件不能正常下載、顯示和使用。請注意,版本在這里之間是用”,”來間隔的。

控件的版本可以通過點擊iWebOffice2003.ocx文件的屬性查看,如圖:

 

4、 設置客戶端控件的必要屬性

在使用控件打開文檔之前,需要設置控件的一些必要屬性。這些屬性都是客戶端控件的,所以需要用javascript語句在頁面上設置客戶端控件對象的這些屬性。

請打開演示程序的DocumentEdit.asp頁面,找到Load()這個javascript函數——在演示程序中是一個打開文檔的函數。首先就可以看到一些控件對象重要屬性的設置,如:

webform.WebOffice.WebUrl="<%=mServerUrl%>";

webform.WebOffice.RecordID="<%=mRecordID%>";

webform.WebOffice.Template="<%=mTemplate%>";

webform.WebOffice.FileType="<%=mFileType%>";

webform.WebOffice.EditType="<%=mEditType%>";

webform.WebOffice.UserName="<%=mUserName%>";

上述屬性可以在技術白皮書中查到準確的意義和解釋,不過在這里還是為開發人員介紹一下。請注意,這里的調用形式為:form.控件對象名.屬性=””;

WebUrl:指向一個后臺處理頁面。當調用需要后臺處理的功能函數時,客戶端控件會將信息全部打包并發送給這個屬性指向的頁面。然后由該頁面接收信息、處理然后將處理后的信息打包返回給客戶端控件。該屬性不能為空或出錯,否則報錯。演示程序中的這個頁面一般是officeserver.xxx頁面,如officeserver.aspasp開發)、officeserver.jspjsp開發)、OfficeServer.aspx.csc#開發)等等。

RecordID:文檔編號。用于向后臺傳需要打開的文檔的編號。演示程序中是用當前時間做編號,開發人員可以根據自己系統的情況來設置。可以為空,為空時如果調用打開文檔函數則會判斷是否有模版編號,如果有打開模版;沒有模版編號或打開模版失敗時打開一個空白文檔。

Template:模版編號。用于向后臺傳需要打開的模版的編號。需要打開模版時設置,不打開模版時可以為空。

FileType:文件類型。要打開的文檔類型,可以是.doc/.xls/.ppt/.wps

EditType:編輯方式。打開文檔后的編輯方式,可以是0=閱讀;1=修改[無痕跡]2=修改[有痕跡]3=核稿。EditType還有一個更為靈活的設置方式能滿足用戶各種表現形式的需要,更多設置請參考技術白皮書中的相關內容。

UserName:編輯用戶。編輯文檔的用戶。

上述屬性中WebUrlFileTypeEditTypeUserName為重要屬性,不能空缺,請開發時務必注意。客戶端控件對象更多的屬性及其意義,請參考技術白皮書中的內容。

5、 打開、保存和關閉文檔

剛才的Load()這個javascript函數在屬性設置的后面有一個WebOpen()接口;這個是用來打開文檔的函數。這個函數是沒有參數的,因為必要的信息都在之前的屬性中設置了。開發人員在設置完那些屬性后,調用WebOpen()就可以打開文檔了。

保存文檔的函數是webform.WebOffice.WebSave()。調用這個函數,客戶端控件將文檔內容和控件屬性都發送到后臺處理頁面(officeserver.asp),然后在該頁面中來實現保存。

在退出文檔編輯頁面時,需要調用關閉文檔的接口函數:webform.WebOffice.WebClose()用于釋放資源,一般可以在頁面bodyonunload事件中來調用。

上述函數在演示程序中都能找到。

6、 officeserver.asp文件的作用

Officeserver在演示程序中就是后臺處理頁面。開發人員開發時名稱可以根據自己需要,但是一定要在使用到了控件的頁面中為控件對象的weburl屬性指定正確的訪問處理頁面的路徑。注意,路徑為絕對路徑,如:http://iweboffice/officeserver.asp。如果開發人員現在是使用演示程序中的表結構,并且數據庫連接對象也使用名為DBDemoSession對象來保存,那么演示程序的Officeserver文件基本上可以直接使用,不用修改。(JAVA開發的話就是修改數據庫連接類了:iDBManager2000.java

用編輯器打開這個文件,我們了解一下里面的結構。

前面定義了變量和函數,然后從“mFilePath=Server.MapPath(".")”開始,是程序的起點。首先實例化了服務器組件的對象,然后用這個對象來接受客戶端傳的信息。接著解析信息,并判斷傳過來的“OPTION”的變量值。這個“OPTION”值是客戶端控件根據用戶調用函數的不同自動進行設置的(接口函數調用后對應OPTION值的變化在技術白皮書中有對照,同時在我們的示例程序里都有注釋說明)。然后在這里,針對不同的OPTION值需要有不同的處理方式,也就是對不同的客戶端函數調用,這里做不同的處理。演示程序提供了一些處理的方式,開發人員可能需要針對自己的系統情況做一些修改或取舍。比如:有些查詢的數據庫表、字段可能要修改,有些演示程序中不足的功能需要自己添加。

同時,這里可以看到之前控件一些重要的屬性,在這里會被用到。如mRecordIDmFileTypemUserName等等。

這里請注意mFileBody這個對象,他用來保存WORD文檔的內容。所以在需要對文檔進行操作的時候都會用到這個對象,比如:打開/保存文檔、打開/保存模版、插入文檔等等。在打開文檔時注意將mFileBody的內容付給MsgObj.MsgFileBody;而保存時將MsgObj.MsgFileBody付給mFileBody

7、 打開/保存文檔流程說明

為了開發人員更清楚的理解控件的工作方式,這里以流程的形式講述一下打開/保存文檔的處理過程。

打開文檔:流程開始:1、選擇列表中的一條要打開的數據      2、數據傳進DocumentEdit頁面【文檔編號(RecordID)、文檔類型(FileType)、打開方式(EditType)、打開用戶(UserName)被傳進來】      3、傳進來的信息被設置給客戶端控件的屬性       4、屬性設置后調用控件WebOpen()函數打開文檔      5、控件OPTION值被自動設置成LOADFILE,控件的全部信息被控件打包,傳給WebUrl指定的頁面      6、處理頁面實例化服務器端組件     7、使用服務器組件對象來接收傳過來的信息        8、解析數據包,判斷OPTION     9、發現OPTION值為LOADFILE,進入LOADFILE處理方式      10、取文檔編號(RecordID     11、通過RecordID檢索數據庫,找到需要打開文檔的記錄      12、打開保存文檔的大字段,將數據寫進mFileBody      13、將mFileBody中的數據付給服務器端控件      14、服務器端控件將信息打包      15、通過Response對象將數據包寫回客戶端      16、客戶端解析數據包信息,根據EditType設置的方式將文檔顯示出來。流程結束

保存文檔:流程開始:1、在這之前我們假設控件必要的屬性已經被設置     2、使用WebSave()函數保存文檔      3、控件OPTION值被自動設置成SAVEFILE,控件的全部信息被控件打包,傳給WebUrl指定的頁面     4、處理頁面實例化服務器端組件     5、使用服務器組件對象來接收傳過來的信息     6、解析數據包,判斷OPTION     7、發現OPTION值為SAVEFILE,進入SAVEFILE處理方式     8、文檔編號(RecordID)并將文檔數據付給mFileBody      9、通過RecordID檢索數據庫,找到需要打開文檔的記錄,如果沒有則新建     10、保存數據至數據表中     11、清除文檔數據,服務器端控件將信息打包      12、通過Response對象將數據包寫回客戶端       13、客戶端解析數據包信息,返回是否保存成功的信息。流程結束

三、演示程序的結構

示例程序環境如下: 

頁面文件:

頁面文件

說明

DocumentList.xxx

數據列表頁面,用于打開、新建文檔

DocumentEdit.xxx

文檔編輯頁面

DocumentSave.xxx

表單內容保存頁面,用于保存文檔編輯頁面中表單里的信息

OfficeServer.xxx

文檔信息后臺處理的交互頁面

目錄Template

模版管理文件夾

TemplateList.xxx

模版列表頁面

TemplateEdit.xxx

模版編輯頁面

TemplateForm.xxx

套用模版用的頁面

TemplateSave.xxx

模版提交保存的頁面

TemplateDel.xxx

模版刪除頁面

目錄BookMark

標簽管理文件夾

BookMarkList.xxx

標簽列表頁面

BookMarkEdit.xxx

標簽編輯頁面

BookMarkAdd.xxx

標簽新增頁面

…………

…………

目錄Signature

印章管理文件夾

目錄Document

保存文檔在服務器的文件夾中

目錄HTMLHTMLIMAGE

保存轉換成HTML頁面的文件夾

數據表:

表名

說明

Document

文檔基本信息表,保存基本信息

Document_File

文檔正文信息表,保存數據

Template_File

模板信息表,保存模版數據

Version_File

文檔版本正文信息表,保存版本的文檔信息

Signature

簽章基本表

Document_Signature

文檔簽章記錄信息表,保存針對文檔中的簽名和印章信息

BookMarks

標簽基本表(如果應用到標簽功能,就需要該表)

Template_BookMarks

模板對應標簽表,保存定義模版時加入在模版中的標簽

   

 

全文完。

 

 

 

 

 



铁牛视频app下载苹果-铁牛视频app下载地址-铁牛视频app破解版ios