2

PDF Extractor (ここから) を使用して、電子メールの PDF 添付ファイルからテキストを取得しています。

テキストを抽出できる唯一の方法は、PDFをファイルに保存してからコードを使用することだと私には思えます。

Private Function ReadPdfToStringList(tempfilename As String) As List(Of String)
    Dim extractedText As String
    Using pdfFile As FileStream = File.OpenRead(tempfilename)
        Using extractor As Extractor = New Extractor()
            extractedText = extractor.ExtractToString(pdfFile)
        End Using
    End Using
    DeleteTempFile()
    Return New List(Of String)(extractedText.Split(Chr(13)))
End Function

PDF ファイルから文字列のリストを抽出します。

ただし、添付ファイルからテキストを直接抽出することはできません。「エクストラクタ」は、ディスク上のファイル以外のソースを処理できないようです。

おそらくメモリ内ファイルストリームを作成することによって、「エクストラクタ」をだましてメモリからファイルを開く方法はありますか?

私はこのようなを使ってみましたMemoryStream

Private Function ReadPdfMemStrmToStringList(memstream As MemoryStream) As List(Of String)
    Dim extractedText As String
    Using extractor As Extractor = New Extractor()
        extractedText = extractor.ExtractToString(memstream)
    End Using
    Return New List(Of String)(extractedText.Split(Chr(13)))
End Function

ただし、エクストラクタはソースがディスク ファイルであると想定しているため、一時ファイルが見つからないというエラーが返されます。

正直なところ、私はメモリ ストリームを理解しようとかなりの時間を費やしてきましたが、それらは要求に合わないようです。

アップデート

添付ファイルを MemoryStream に保存するために使用しているコードもここにあります。

Private Sub SaveAttachmentToMemStrm(msg As MimeMessage)
    Dim memstrm As New MemoryStream
    For Each attachment As MimePart In msg.Attachments
        If attachment.FileName.Contains("booking") Then
            attachment.WriteTo(memstrm)
        End If
    Next
    'this line only adds the memory stream to a List (of MemoryStream)
    attachments.Add(memstrm)
End Sub

明らかな何かを見逃した場合は、お詫び申し上げます。

4

0 に答える 0