简短的背景,我有很多笔记,我15年前用wpd格式输入,大约10年前,我将它们转换为rtf格式,现在我想将它们转换为html。所有的PHP示例,我看过使用非常基本的HTML。我想做的方式将涉及嵌套列表。
http://dl.dropbox.com/u/47490038/ech.rtf
https://dl.dropbox.com/u/47490038/notes/index.html
到目前为止,我已经使用了下面的宏,从rtf到txt,但现在php部分超出了我,其中一些可以通过计算每行开头的制表符或空格来完成,请参阅上面的url表示所需的输出。我可以稍后添加其他样式。
我愿意接受有关如何做到这一点的建议,即使这是我不熟悉的语言。即使是宏,我也不是很满意,我希望能够选择一个文件夹或一个文字以外的文件,甚至可能是带有拖拽和放大器的东西。考虑到我有100个这样的转换。
Sub ChangeDocsToTxtOrRTFOrHTML()
'with export to PDF in Word 2007
Dim fs As Object
Dim oFolder As Object
Dim tFolder As Object
Dim oFile As Object
Dim strDocName As String
Dim intPos As Integer
Dim locFolder As String
Dim fileType As String
On Error Resume Next
locFolder = InputBox("Enter the folder path to RTFs", "File Conversion", "C:\myDocs")
Select Case Application.Version
Case Is < 12
Do
fileType = UCase(InputBox("Change DOC to TXT, RTF, HTML", "File Conversion", "TXT"))
Loop Until (fileType = "TXT" Or fileType = "RTF" Or fileType = "HTML")
Case Is >= 12
Do
fileType = UCase(InputBox("Change DOC to TXT, RTF, HTML or PDF(2007+ only)", "File Conversion", "TXT"))
Loop Until (fileType = "TXT" Or fileType = "RTF" Or fileType = "HTML" Or fileType = "PDF")
End Select
Application.ScreenUpdating = False
Set fs = CreateObject("Scripting.FileSystemObject")
Set oFolder = fs.GetFolder(locFolder)
Set tFolder = fs.CreateFolder(locFolder & "Converted")
Set tFolder = fs.GetFolder(locFolder & "Converted")
For Each oFile In oFolder.Files
Dim d As Document
Set d = Application.Documents.Open(oFile.Path)
strDocName = ActiveDocument.Name
intPos = InStrRev(strDocName, ".")
strDocName = Left(strDocName, intPos - 1)
ChangeFileOpenDirectory tFolder
Select Case fileType
Case Is = "TXT"
strDocName = strDocName & ".txt"
ActiveDocument.SaveAs FileName:=strDocName, FileFormat:=wdFormatText
Case Is = "RTF"
strDocName = strDocName & ".rtf"
ActiveDocument.SaveAs FileName:=strDocName, FileFormat:=wdFormatRTF
Case Is = "HTML"
strDocName = strDocName & ".html"
ActiveDocument.SaveAs FileName:=strDocName, FileFormat:=wdFormatFilteredHTML
Case Is = "PDF"
strDocName = strDocName & ".pdf"
' *** Word 2007 users - remove the apostrophe at the start of the next line ***
'ActiveDocument.ExportAsFixedFormat OutputFileName:=strDocName, ExportFormat:=wdExportFormatPDF
End Select
d.Close
ChangeFileOpenDirectory oFolder
Next oFile
Application.ScreenUpdating = True
End Sub
我意识到我要求很多,任何指导,建议,帮助,代码将不胜感激。
答案 0 :(得分:1)
在我看来,您的源文档是RTF,但它们不使用任何基于RTF的嵌套。是对的吗?例如,“2级”子弹与“1级”子弹不同,不是因为RTF中的任何内容,而是因为有人添加了更多空格?
在文件中查看例如我看到很多\ par标记,但没有任何表示嵌套。所以你有一个\ par \ ul块(例如在'原始教堂'),然后直接进入A.1小节,没有任何东西,只有一个标签和一个祷告(可以这么说!)
鉴于此,你不能过分依赖RTF。我建议将删除所有RTF标记,留下一个doc,其布局仅通过使用空格和制表符来定义。然后,处理每一行(Perl对此有利)并从空格数量开始计算并使用前导组合,如新列表一样。并相应地插入标签。
这将是丑陋的,但这是坏标记的代价。