2009-11-26 85 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