服务器 频道

使用ASP和Word进行服务器端拼写检查

  【IT168 服务器学院】本文讨论的问题与下列方面相关:

  Microsoft Word 97 for Windows

  Microsoft Visual InterDev, version 6.0

  Microsoft Internet Information Server version 4.0

  概要

  本文描述了如何使用Microsoft Word在Web页面ASP文件中添加拼写检查功能。

  详细的步骤

  按照下列步骤建立ASP应用程序:

  1、在Web服务器所在机器上,启动Microsoft Visual Interdev 6.0,选择File/New Project。

  2、在“新工程”对话框的名字编辑域中,输入“WebSpell”,然后双击新Web工程图标。

  3、在接着出现的Web工程向导对话框中,输入或者选择你的Web服务器名字。将工作模式默认为Master,点击Next,再点击“finish”。

  4、在Visual InterDev创建工程完成后,打开工程菜单,选择“添加Web ItemHTML页面”,命名为“CheckSpelling”,然后点击Open。

  5、添加的HTML页面默认状态下以设计视图打开。在页面上拖出一个HTML文本区域,放置一个HTML提交按钮,根据你的爱好进行布局,在页面上输入一些文字,告诉用户在文本域中输入需要进行拼写检查的文字。

  6、选择页面上的所有对象(CTRL+A),然后从Visual InterDev的 HTML菜单中选择Form,将对象包裹在表单中。

  7、点击当前窗口底部的源码功能页面,切换到源码显示视图。修改HTML开放< form >标记的action属性值为results.asp。

  8、打开Project菜单,选择“添加Web ItemActive Server Page”,命名为“results”,然后点击“Open”。

  9、对于新页面,切换到源码视图,在<body>标记之间输入下面的代码:

  <!-- page header -->

  <p><center><font size="+4" color="red">Spelling Results</font></center><hr/>

  <!-- show user the text they entered -->

  <p>The text you entered was:<p>

  <font color="blue"><%="request("textarea1")%"></font><p><hr/><p>

  <!-- begin server-side script to check spelling errors -->

  <%

  '' don''t allow other sessions to re-enter :)

  do while(application("wordinuse") ="" 1)

  loop

  application("wordinuse") ="" 1

  '' get word references created in global.asa.

  dim wdapp

  set wdapp ="" application("wordapp")

  dim wddoc

  set wddoc ="" application("worddoc")

  '' clear current contents.

  dim wdrange

  set wdrange ="" wdapp.selection.range

  wdrange.wholestory

  wdrange.delete

  set wdrange ="" nothing

  '' add the text the web user entered.

  dim txt

  txt ="" request("textarea1")

  wdapp.selection.typetext cstr(txt)

  '' check spelling without prompting.

  ''wddoc.checkspelling , , 0

  '' get spelling errors collection.

  dim wderrors

  set wderrors ="" wddoc.spellingerrors

  %>

  <% '' handle no-error condition.

  if wderrors.count ="" 0 then

  %>

  There were no spelling errors.

  <%

  '' otherwise build a table of suggestions.

  else

  %>

  <!-- build a table to show errors & suggestions -->

  <font color="red">There were <%="wderrors.count%"> spelling error(s).</font><p>

  <table border="1" cellpadding="1" cellspacing="1" width="75%">

  <tr>

  <td><b><font size="+1">Word</font></b></td>

  <td><b><font size="+1">Suggestions</font></b></td></tr>

  <%

  for each wderror in wderrors

  '' write the word in question.

  response.write("<tr><td>")

  Response.Write(wdError.Text)

  Response.Write("</td><td>")

  '' Get spelling suggestions for it.

  dim wdSuggestions

  set wdSuggestions = wdApp.GetSpellingSuggestions(wdError.Text)

  if wdSuggestions.Count <> 0 then

  '' a comma-separated list of suggestions.

  dim strSuggestions

  strSuggestions = ", "

  for each wdSuggestion in wdSuggestions

  strSuggestions = strSuggestions & wdSuggestion.Name & ", "

  next

  '' Remove extra comma & space.

  strSuggestions = Right(strSuggestions, len(strSuggestions)-2)

  '' Write out suggestions.

  Response.Write(strSuggestions)

  else

  Response.Write("None.")

  end if

  set wdSuggestions = Nothing

  Response.Write("</td></tr>")

  next

  end if

  '' Release references.

  set wdErrors = nothing

  set wdDoc = nothing

  set wdApp = nothing

  '' We''re done, allow other sessions to continue.

  Application("WordInUse") = 0

  %>

  10、在Visual InterDev 工程浏览窗口中,双击Global.asa文件,在< script >标记之间添加下面2段子程序:

  Sub Application_OnStart()

  '' Launch Word.

  dim wdApp

  set wdApp = CreateObject("Word.Application")

  set Application("WordApp") = wdApp

  '' Add a document.

  set Application("WordDoc") = wdApp.Documents.Add

  '' Release reference.

  set wdApp = nothing

  End Sub

  Sub Application_OnEnd()

  '' Get Automation references.

  dim wdApp

  set wdApp = Application("WordApp")

  dim wdDoc

  set wdDoc = Application("WordDoc")

  '' Tell Word to shutdown.

  wdDoc.Saved = true

  wdApp.Quit

  '' Release references.

  set Application("WordDoc") = Nothing

  set Application("WordApp") = Nothing

  set wdDoc = nothing

  set wdApp = nothing

  End Sub

  11、最后,在工程浏览窗口中用鼠标右键单击CheckSpelling.htm文件,选择“设置为初始页面”。

  12、从File菜单中选择“保存所有”(CTRL+SHIFT+S),再从Build菜单中选择“Build”(Control-Shift+B)。

  现在可以进行测试了,在客户端输入“http:///WebSpell/CheckSpelling.htm”。

  在Web页面的文本域中输入一些文字,点击“Submit”,然后就可以看到results.asp对你输入的文字报告一些错误拼写和建议。

  工程的工作流程

  当用户首次浏览到CheckSpelling.htm页面时,Application_OnStart()事件被触发。这个过程启动Microsoft Word,为拼写检查做准备,保存应用和文档对象到2个ASP应用程序级别的变量中。这使页面变得很有效率,因为你可以再次调用Word的同一实例,而不是为每一次拼写检查要求都执行多次实例。接着,当用户点击按钮Submit时,result.asp页面通过ASP的Request对象获取输入值,然后利用存储的Microsoft Word对象来执行拼写检查。result.asp注意了当多个用户会话同时使用同一实例时可能发生的问题,如果一个用户正在使用,就进行调度处理。

  注意:一旦一个Web用户登录了工程文件,Web服务器就会有一个WinWord.exe进程在后台运行,它将处理拼写检查的请求。当应用程序发生OnEnd()事件时,ASP应用程序才会释放这个实例,而OnEnd()事件只有当Web服务停止时才被触发。可以通过运行下列的命令来停止并重新启动Web服务:

  net stop w3svc

  net start w3svc

0
相关文章