2009-11-26 83 views
2

有谁知道RTF到HTML转换器的任何vbscript/javascript实现?javascript vbscript从rtf转换为html

我在VB/c#中看到了一些,但是找不到任何对脚本版本的引用。在我开始编写之前 - 有谁知道现有的开源项目处理这个?

非常感谢,

弗兰科

回答

0

如何舒服你是用PHP?这个类看起来有窍门,所以你可以按原样使用它,或者转换为Javascript,甚至可以用作指导。

http://pastebin.ca/1688799

+0

谢谢你 - 完美的地方给我开始,非常感谢Gausie! – frank 2009-11-27 16:20:32

+3

你能发布一个不会过期的链接吗? – rafalry 2010-12-08 14:01:50

+3

-1链接已死。这就是为什么当人们在没有解释的情况下发布链接时我讨厌它。 – 2012-01-17 20:52:57

2

弗兰克 -

你没有指定你的目标的平台。但是,您提到的VBScript和Javascript的事实表明您至少使用基于Windows的机器。如果是这样,并且您有权访问Word的一个版本,则可以使用自动执行转换的脚本,将Word用作进程外服务器。即使那样,你也没有真正说过这是从Windows会话还是通过Web服务器完成的。

如果你想从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可能使用GUI元素的事实使得这可能很危险,因为Word可能会在某种错误情况下显示对话。

在这种情况下,最好从服务器脚本中退出Windows脚本宿主代码以断开两个进程的连接,而是在适当的延迟后返回一个客户端拉的页面。

+0

嗨马克, 令人惊讶的彻底和有益的答案!我应该指定我只需要在脚本中执行此操作 - 但要砸掉响应! – frank 2009-11-27 16:19:15

+0

“just in script”=不依赖于外部对象 – frank 2009-11-27 16:19:48