摘要:本文介绍了一种用简单、便捷的远程教育课件开发工具--备课系统并对其中用的将RTF文件转换成HTML格式文件的技术和课件框架生成的技术做了详细的说明,并且给出了制作完成的课件的成效。
关键词:远程教育、备课系统、课件、RTF文件、HTML文件
1、前言
伴随Internet的不断普及,网上的各种素材和资料愈加多,也愈加丰富,这给互联网远程教育的飞速进步带来了机会。愈加多的互联网课件被开发出来,给老师和学生的教与学带来了很大的便捷。可是这类课件通常都是由某个或某些老师依据我们的需要和讲课习惯来撰写制作的,有非常浓的个人特点。而对于其他的学校、其他的老师,这类课件总是难以满足他们的需要。但制作自己课件又需要非常大的工作量,致使很多老师对于互联网远程教育望而止步。如何才可以让老师们能迅速,便捷的制作我们的课件呢?
2、备课系统
本文介绍一个由暨南大学软件工具研究所研制开发的互联网课件开发工具--老师备课系统。这个系统的主要功能是将文字,图片,声音,动画等素材以编辑文档的方法制作成老师的课件,然后将课件转换成网页的形式发布到网上,老师就能进行远程教学了。系统的操作界面与Microsoft
word很相似(如图1),对于那些熟知word的老师来讲操作起来就驾轻就熟了。系统还提供课件框架生成器,以树形目录的方法管理课件中的网页,如此老师讲课就能愈加明确有条理了。
系统用的核心技术是将Microsoft word支持的一种通用的文件格式--Rich text format,转换成网页的格式--html。对于很多人来讲,html已经十分熟知了,可是对于RTF则不太知道,下面就来剖析一下RTF的结构。
3、RTF文件格式
RTF的结构其实并不复杂,事实上每一个RTF文件都是一个文本文件,里面包含命令和正文,然后由编辑器来讲解这个文本文件,剖析里面的各种命令,并将相应的正文显示出来。
RTF文件中的命令都是一些以符号开始的字符串,比如在文件的刚开始就以 tf来表示这个文件是一个RTF格式的文件。另外一个完整的RTF文件包含文件头和文件体两部分。在文件头中包含字体表、文件表、颜色表的几个数据结构,文件体中的字体、表格的风格都是依据文件头中的信息来格式化的。文件头中的每个表都以一对大括号括起来。下面就是一个颜色表的例子。
{colortbl; ed0green0lue0; ed0green0lue255; ed0green255lue255; ed0green255lue0; ed255green0lue255; ed255green0lue0; ed255green255lue0; ed255green255lue255; ed0green0lue128; ed0green128lue128; ed0green128lue0; ed128green0lue128; ed128green0lue0; ed128green128lue0; ed128green128lue128; ed192green192lue192;}
第一由一个colortbl来表示大括号内是颜色表,然后由 ed0green0lue0来表示正文显示时用到的一种颜色。这种颜色的红绿蓝分量分别都是0。其他以此类推,两种颜色之间用分号隔开。在内容中以cf0命令来表示目前的文字用第0号颜色来显示。
文件体由版面格式化命令、正文和各种特殊命令组成的。版面格式化命令是用来控制要显示的正文的字体,颜色和其他与版面有关的项目的。而特殊的命令则是在显示一些比如图象,表格等特殊正文时所用的。有一些特殊命令会用到大括号来括住他的一些子命令,但无论怎么样,左大括号的数目和右大括号的数目中是一一对应的(注意:整个RTF文件也由一对大括号括起来)。另外,在因为字符用来表示命令的开始,所以用来表示正文中的字符。
对于中文字,RTF文件进行了特殊的处置,大家都知道,一个中文字是由一个16位的数字组成的内码来表示的,也就是两个ASCII字符的长度。RTF文件中并非简单的将这两个ASCII字符放在正文中,由于如此会引起特殊ASCII字符和中文字的冲突。RTF文件用了命令的方法来表示中文字:内码1内码2其中的内码是以文本的方法存储的。比如老师备课系统在RTF中表示为c0cfcaa6b1b8bfcecfb5cdb3。
另外,RTF文件对图形的处置是一个非常重要的问题,也是达成备课系统的一个难题。在RTF文件中,图形以两种方法存在。第一种是直接嵌入的方法,以pict命令开始,第二种方法将图片作为OLE对象嵌入,以object命令开始。并且无论以那种方法,整个图片的数据都是由一对大括号括起来的(即{object
})。每个OLE对象在RTF中分为两个部分,第一部分是OLE的数据,假如RTF的文件讲解器能进行OLE操作时,可以借助这部分的数据得到OLE的属性参数并对其进行修改显示,第二部分由 esult命令引出,后面跟的其实是一个图片,当RTF的文件讲解器不可以进行OLE操作时,则可以简单的显示该图片。但如此就不可以对该OLE对象进行修改了。图片数据是以Microsoft内部用的一种矢量图metaFILE格式来存储的。在RTF中存放了一个完整的metaFILE文件,但其数据是以ASCII字符的方法存在。因为大部分浏览器都不支持这种格式的图片文件,因此需要将它转换成通用的图片格式,比如:BMP、GIF、JPG等等,但在Microsoft
Windows的软件开发手册中没对metaFILE进行说明,因此没办法对起进行直接的转换,但在Microsoft Windows的软件开发包(software
develop kid)中有两个函数GetmetaFile和PlaymetaFile,这两个函数可以将一个metaFILE格式的图片直接显示在屏幕上,如此就为格式的转换提供了便捷,办法是:第一将以ASCII字符形式存放在RTF中的metaFILE文件变成以16进制数形式存放的独立的文件保存在磁盘的一个临时文件中,然后用GetmetaFile和PlaymetaFile将它显示在屏幕上(这里的屏幕事实上是一个虚拟的屏幕,即在内存中打造一个假的屏幕数据结构--Memory
DC,里面有虚拟的显示内存,因此在实质的屏幕上看不见图片的显示)。然后用抓图的办法就能将图片的像素取出来并将它保存成BITMAP图片格式文件了。再通过一些通用的图形转换程序就能将它保存成容量比较小的GIF或JPG格式了。(具体程序如附录1)
下面详细介绍一下从RTF转换成HTML的步骤,步骤图如图2:
转换的步骤其实也是非常简单的,就是搜寻命令字的前导符,然后对其后面的命令进行相应的处置,应该注意的是大括号的匹配,由于这会直接影响到命令有哪些用途域问题,一般在进入一个命令的处置程序后,假如发现有左大括号存在,则这个命令会一直起用途,直到有相应的右括号与其相匹配为止,假如有大括号的嵌套,则命令将一直起用途到所有些左大括号都有相应的右大括号与其匹配为止(正文中的大括号用{、}来表示)。
有了RTF到HTML的转换器,备课系统可以说已经完成了一半了(图3所示就是图1的RTF文档转成的html后的成效)。
4、课件框架生成器
为了老师上课的便捷,单单将一个文档变成网叶是不够的,老师讲课是依据肯定的层次、肯定的顺序来讲课的,所以还要增加一个课件框架生成器,这里借助了一个控件Treeview,这个控件可以显示一个树形的数据结构,借助每一个节点带有些属性(key表示接点的ID;tag表示节点所连接的网页路径;text表示节点的名字)就能树的形式显示一个课件的层次关系了。(如图4)
这个树的结构可以存盘,以便下次老师修改。另外还可以通过javascript将它在网页上显示出来,具体的做法是:第一撰写一段javascript程序(如附录2)用来把一个数组在网页上显示成树结构形式,其中数组的部分用一个标识符号标记,当每次要生成课件框架的时候先将数形数据结构以数组的形式存放,然后将数组信息替换掉这个标识符号,如此在网页上看到的就是Treeview控件中的数形结构。(图5就是图4的树结构在ie上显示的结果)
为了老师用的便捷,系统还提供了超连接、资源管理器、java微信小程序连接和声音图象连接等功能。如此就形成了一套足够老师平时备课所用的备课系统。另外,系统还提供了课件的上载功能,只须老师按需要设置好服务器,将来增加或修改课件是非常便利的。但因为大家的着眼点是面向老师用的系统而不是给一些专业人士用的,为了使老师愈加便捷的用法本系统,系统将一些复杂的操作尽可能简化,如此做带来的结果是功能否与fontpage等专业软件相提并论论,可是本系统也有我们的特征是fontpage没的,比如课件框架生成器。另外,word里面也有将RTF另存为html的功能,但起转换器常常将不可以将图片完全转换出来。而且老师要用word来制作一个完整的课件需要很多工具的配合,给一些对电脑不太熟知的老师带来了非常大的麻烦。本系统为老师提供了完整的制作课件的环境,从刚开始的制作到最后的发布到网上,都有支持,因此与其他的一些系统相比,有其独特的地方。当然本系统也还有很多不足之处,比如对表格的转换,因为RTF文档中的命令伴随需要的不断提升而改变,尤其是表格的处置命令每一个版本的RTF都有修改,因此非常难对表格进行支持,所以需要老师将表格转换成图片才能显示表格。