admin 管理员组

文章数量: 887021


2024年2月28日发(作者:brawling)

iWebOffice2003/06简单快速集成指南

为了帮助开发人员能够快速将控件集成于系统中,特借本指南为开发人员介绍控件的工作原理和集成的方法。

下面将以iWebOffice2003的演示程序为例给大家做介绍。示例的开发语言为asp,其他开发语言也会顺带提到。

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

一、控件的工作原理

iWebOffice控件其实是有两个文件(或者称两个控件)组成的。一个用于集成在页面上的文件和一个用户后台服务器上的(JAVA开发语言下则是DBstep目录下的)文件。

控件的工作其实就是前后台通信和处理的过程。集成在页面上,通过javascript脚本调用,用于文档的编辑,以及传递信息到服务器;在服务器端运行,用于解析控件发过来的信息包,以及将服务器上处理的结果反馈给客户端的

客户端控件的函数功能分两种:

1、 不和服务器交互的功能,这类函数实现一个文档表面的功能,不需要和服务器端交互(即不向服务器端的处理页面发数据),如:设置书签内容、获取文档的内容、获取文档痕迹、插入本地文档和图片等;

2、 另一类是要和服务器交互的功能,这类函数调用时客户端控件都会将控件中的信息打包发向处理页面,处理页面引用服务器端控件来解析传过来的内容,并进行处理,具体服务器页面程序执行那端代码,在我们的示例程序里都有关于具体交互OfficeServer页面OPTION值的注释,处理完后将信息通过服务器端控件打包,再发送给客户端,这类函数需要一个“客户端”—>“服务器处理页面”—>“客户端”的流程才能完成工作,如:打开文档、保存文档、插入服务器上的文档到当前文档中、套用模版、签名盖章等。

二、控件的集成步骤

1、 注册服务器端组件

演示程序包中有一份名称为《COM组件安装.doc》的文档,里面介绍了WINDOWS平台下如何注册服务器端组件,请开发人员参考操作。

开发语言为JAVA的话可以不用注册。只要保持文件在DBstep目录下就可以了。

2、 数据库准备

演示中提供了演示用的数据库文件,如果希望集成时省点心可以直接用我们提供的表。相信开发之前都会看看演示程序,所以表应该都会有的。使用演示程序提供的表可以方便的使用后面会说到的officeserver文件,不用做大量的修改。开发人员可以先用这些表做集成,等理解了控件的工作方式,可以再使用自己的表。

3、 集成客户端控件

23739A7E-5741-4D1C-88D5-D50B18F7C347”

codebase=“ #version=6,0,0,4 “ >

在需要进行文档编辑和保存的页面上,将上面的代码放在希望显示文档的地方。其中:id是可以开发人员定义的,是指控件在页面上形成对象的名称;classid是固定的,是控件的注册编号;codebase由两部分组成,codebase=后面到#version之前的部分是控件的下载地址,

#version=之后的部分是控件的版本号。控件的下载地址和版本号都务必写正确,否则可能造成控件不能正常下载、显示和使用。请注意,版本在这里之间是用”,”来间隔的。

控件的版本可以通过点击文件的属性查看,如图:

4、 设置客户端控件的必要属性

在使用控件打开文档之前,需要设置控件的一些必要属性。这些属性都是客户端控件的,所以需要用javascript语句在页面上设置客户端控件对象的这些属性。

请打开演示程序的页面,找到Load()这个javascript函数——在演示程序中是一个打开文档的函数。首先就可以看到一些控件对象重要属性的设置,如:

=““;

ID=““;

te=““;

pe=““;

pe=““;

me=““;

上述属性可以在技术白皮书中查到准确的意义和解释,不过在这里还是为开发人员介绍一下。请注意,这里的调用形式为:form名.控件对象名.属性=””;

WebUrl:指向一个后台处理页面。当调用需要后台处理的功能函数时,客户端控件会将信息全部打包并发送给这个属性指向的页面。然后由该页面接收信息、处理然后将处理后的信息打包返回给客户端控件。该属性不能为空或出错,否则报错。演示程序中的这个页面一般是页面,如(asp开发)、(jsp开发)、(c#开发)等等。

RecordID:文档编号。用于向后台传需要打开的文档的编号。演示程序中是用当前时间做编号,开发人员可以根据自己系统的情况来设置。可以为空,为空时如果调用打开文档函数则会判断是否有模版编号,如果有打开模版;没有模版编号或打开模版失败时打开一个空白文档。

Template:模版编号。用于向后台传需要打开的模版的编号。需要打开模版时设置,不打开模版时可以为空。

FileType:文件类型。要打开的文档类型,可以是.doc/.xls/.ppt/.wps。

EditType:编辑方式。打开文档后的编辑方式,可以是0=阅读;1=修改[无痕迹];2=修改[有痕迹];3=核稿。EditType还有一个更为灵活的设置方式能满足用户各种表现形式的需要,更多设置请参考技术白皮书中的相关内容。

UserName:编辑用户。编辑文档的用户。

上述属性中WebUrl、FileType、EditType和UserName为重要属性,不能空缺,请开发时务必注意。客户端控件对象更多的属性及其意义,请参考技术白皮书中的内容。

5、 打开、保存和关闭文档

刚才的Load()这个javascript函数在属性设置的后面有一个WebOpen()接口;这个是用来打开文档的函数。这个函数是没有参数的,因为必要的信息都在之前的属性中设置了。开发人员在设置完那些属性后,调用WebOpen()就可以打开文档了。

保存文档的函数是e()。调用这个函数,客户端控件将文档内容和控件属性都发送到后台处理页面(),然后在该页面中来实现保存。

在退出文档编辑页面时,需要调用关闭文档的接口函数:se()用

于释放资源,一般可以在页面body的onunload事件中来调用。

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

6、 文件的作用

Officeserver在演示程序中就是后台处理页面。开发人员开发时名称可以根据自己需要,但是一定要在使用到了控件的页面中为控件对象的weburl属性指定正确的访问处理页面的路径。注意,路径为绝对路径,如:iweboffice/。如果开发人员现在是使用演示程序中的表结构,并且数据库连接对象也使用名为DBDemo的Session对象来保存,那么演示程序的Officeserver文件基本上可以直接使用,不用修改。(JAVA开发的话就是修改数据库连接类了:)

用编辑器打开这个文件,我们了解一下里面的结构。

前面定义了变量和函数,然后从“mFilePath=h(“.”)”开始,是程序的起点。首先实例化了服务器组件的对象,然后用这个对象来接受客户端传的信息。接着解析信息,并判断传过来的“OPTION”的变量值。这个“OPTION”值是客户端控件根据用户调用函数的不同自动进行设置的(接口函数调用后对应OPTION值的变化在技术白皮书中有对照,同时在我们的示例程序里都有注释说明)。然后在这里,针对不同的OPTION值需要有不同的处理方式,也就是对不同的客户端函数调用,这里做不同的处理。演示程序提供了一些处理的方式,开发人员可能需要针对自己的系统情况做一些修改或取舍。比如:有些查询的数据库表、字段可能要修改,有些演示程序中不足的功能需要自己添加。

同时,这里可以看到之前控件一些重要的属性,在这里会被用到。如mRecordID、mFileType、mUserName等等。

这里请注意mFileBody这个对象,他用来保存WORD文档的内容。所以在需要对文档进行操作的时候都会用到这个对象,比如:打开/保存文档、打开/保存模版、插入文档等等。在打开文档时注意将mFileBody的内容付给eBody;而保存时将eBody付给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、客户端解析数据包信息,返回是否保存成功的信息。流程结束

三、演示程序的结构

示例程序环境如下:

页面文件:

页面文件

说明

数据列表页面,用于打开、新建文档

文档编辑页面

表单内容保存页面,用于保存文档编辑页面中表单里的信息

文档信息后台处理的交互页面

目录Template

模版管理文件夹

模版列表页面

模版编辑页面

套用模版用的页面

模版提交保存的页面

模版删除页面

目录BookMark

标签管理文件夹

标签列表页面

标签编辑页面

标签新增页面

…………

…………

目录Signature

印章管理文件夹

目录Document

保存文档在服务器的文件夹中

目录HTML或HTMLIMAGE

保存转换成HTML页面的文件夹

数据表:

表名

说明

Document

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

Document_File

文档正文信息表,保存数据

Template_File

模板信息表,保存模版数据

Version_File

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

Signature

签章基本表

Document_Signature

文档签章记录信息表,保存针对文档中的签名和印章信息

BookMarks

标签基本表(如果应用到标签功能,就需要该表)

Template_BookMarks

模板对应标签表,保存定义模版时加入在模版中的标签

全文完。


本文标签: 控件 页面 文档