bre*_*dog 13 .net pdf-generation memorystream sharppdf
使用sharpPDF库我生成一个pdf内存流,我想通过电子邮件直接发送它.但行ms.Seek(....给出一个ObjectDisposedException;
无法访问封闭的Stream.
pdf.CreatePDF方法接受(输出)fileName字符串或(out)Stream.但我想它也关闭了流?我不习惯在溪流上工作太多,所以如果你能告诉它应该怎么做?
可以在此处找到CreatePDF方法的sharpPDF源代码:
http://www.java2s.com/Open-Source/CSharp/PDF/SharpPDF/sharpPDF/pdfDocument.cs.htm
Public Sub SendPDF()
Dim pdf As New sharpPDF.pdfDocument("Title", "Author")
'....Generate pdf content
Dim ms As New IO.MemoryStream
pdf.CreatePDF(ms)
Dim email As New EmailService
email.Send(ms)
End Sub
Public Class EmailService
Public Sub Send(Byval ms as Stream)
ms.Seek(0, IO.SeekOrigin.Begin)
Dim atc As New Attachment(ms, "Report.pdf")
mail.Attachments.Add(atc)
'....set other email parameters
client.SendAsync(mail, mail.Subject)
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 38
一种简单的方法是从已关闭的MemoryStream中获取字节数组并创建另一个:
pdf.CreatePDF(ms)
ms = new MemoryStream(ms.ToArray())
Dim email As New EmailService
email.Send(ms)
Run Code Online (Sandbox Code Playgroud)
请注意,调用MemoryStream.ToArray
已关闭/处理的实例是可以的MemoryStream
.它甚至记录在案:
注意
此方法在MemoryStream关闭时有效.