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
明らかな何かを見逃した場合は、お詫び申し上げます。