Фрэнк -
Вы не указали, на какую платформу вы нацеливаетесь. Однако тот факт, что вы упомянули VBScript, а также Javascript, говорит о том, что вы хотя бы используете компьютер на базе Windows. Если это так, и у вас есть доступ к версии Word, вы можете использовать скрипт, автоматизирующий преобразование, используя Word в качестве сервера вне процесса. Даже тогда вы не сказали, должно ли это быть сделано из сеанса Windows или через веб-сервер.
Если вы хотите сделать это из сеанса Windows, вы можете использовать следующий VBScript, запущенный на хосте сценариев Windows:
[Rtf2Html.vbs]
Option Explicit
Private Sub ConvertToHtml(documentFileName)
Const wdFormatHTML = 8
Dim fso
Dim wordApplication
Dim newDocument
Dim htmlFileName
On Error Resume Next
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
documentFileName = fso.GetAbsolutePathName(documentFileName)
If Not fso.FileExists(documentFileName) Then
WScript.Echo "The file '" & documentFileName & "' does not exist."
WScript.Quit
End If
Set wordApplication = WScript.CreateObject("Word.Application")
If Err.Number <> 0 Then
Select Case Err.Number
Case &H80020009
WScript.Echo "Word not installed properly."
Case Else
ShowDefaultErrorMsg
End Select
wordApplication.Quit
WScript.Quit
End If
Set newDocument = wordApplication.Documents.Open(documentFileName, False)
If Err.Number <> 0 Then
Select Case Err.Number
Case Else
ShowDefaultErrorMsg
End Select
wordApplication.Quit
WScript.Quit
End If
' Construct a file name which is the same as the original file, but with a different extension.
htmlFileName = Left(documentFileName, InStrRev(documentFileName, ".")) & "htm"
newDocument.SaveAs htmlFileName, wdFormatHTML
newDocument.Close
wordApplication.Quit
End Sub
Private Sub Main
Dim arguments
Set arguments = WScript.Arguments
If arguments.Count = 0 Then
WScript.Echo "Missing file argument."
Else
ConvertToHtml arguments(0)
End If
End Sub
bad
Private Sub ShowDefaultErrorMsg
WScript.Echo "Error #" & CStr(Err.Number) & vbNewLine & vbNewLine & Err.Description
End Sub
Main
Если вы хотите использовать это с веб-сервера, все немного по-другому. Вы можете адаптировать VBScript для страницы ASP или преобразовать его в страницу ASP.NET. В любом случае вам придется заменить объекты WSH соответствующими внутренними объектами. Тем не менее, будьте осторожны: хотя можно использовать внепроцессный сервер из IIS, это, как правило, плохая идея, если только вы не знаете, что это будет сервер с очень малым объемом. Даже в этом случае тот факт, что Word потенциально использует элементы графического интерфейса, делает это потенциально опасным, поскольку вполне возможно, что Word может показывать диалог при некотором состоянии ошибки.
В этом случае может быть лучше отсоединить два процесса путем выделения из серверного сценария кода хоста сценариев Windows и вместо этого вернуть страницу, которая выполняется на стороне клиента после соответствующей задержки.