2

簡単な背景、私はたくさんのメモを持っています。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 を参照してください。目的の出力。後でスタイルを追加できます。

慣れていない言語であっても、これを行う方法についての提案を受け付けています。マクロでさえ、私はあまり満足していません。Word 以外のフォルダーまたはファイルを選択できるようにしたいと考えています。変換するものが 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

私は多くのことを求めていることを認識しています。ガイダンス、提案、ヘルプ、コードは大歓迎です。

4

1 に答える 1

1

ソースドキュメントはRTFであるように見えますが、RTFベースのネストは使用されていません。そうですか?たとえば、「レベル2」の箇条書きは「レベル1」の箇条書きとは異なります。これは、RTFに何かがあるためではなく、誰かがさらにいくつかのスペースを追加したためですか。

たとえばファイルを見ると、\ parマーカーがたくさんありますが、ネストを示すものは何もありません。つまり、\ par \ ulブロック(たとえば、「原始教会」)があり、タブと祈り以外の何物もなしに、サブセクションA.1に直接進みます(いわば!)

それを考えると、RTFにあまり依存することはできません。スペースとタブのみを使用してレイアウトが定義されているドキュメントを残して、すべてのRTFマークアップを削除することをお勧めします。次に、各行を処理し(Perlはこれに適しています)、スペースの数と、新しいリストが開始されている場合のように先頭の組み合わせを使用して計算します。それに応じてタグを挿入します。

それは醜いでしょう、しかしそれは悪いマークアップの代償です。

于 2013-01-31T00:02:47.633 に答える