如何调用创建pdf的页面

时间:2012-12-20 18:01:21

标签: asp.net vb.net

我有一个名为 OrderExport.aspx 的页面,它在服务器上的文件夹中创建一个pdf文件。

在我的页面 OrderSend.aspx 我有一个函数,它发送附有pdf文件的电子邮件,如下所示:

Dim atc As Net.Mail.Attachment = New Attachment(stm, fileNameOrder)
mail.Attachments.Add(atc)

如何在发送电子邮件之前从此功能调用 OrderExport.aspx 而不向用户显示该电子邮件?

我需要确保在发送电子邮件时存在pdf文件。

3 个答案:

答案 0 :(得分:0)

您可能想要创建一个类而不是一个aspx页来处理PDF创建。一种方法是使用PDFSharp库,它可以处理创建PDF文档,然后将其保存到可以附加到电子邮件消息的流中。您也可以同时将流保存到服务器上的文件中。

' Create a new PDF document
Dim document As PdfDocument = New PdfDocument
document.Info.Title = "TITLE"
Dim securitySettings As Security.PdfSecuritySettings = document.SecuritySettings
' Restrict some rights.
securitySettings.PermitAccessibilityExtractContent = False
securitySettings.PermitAnnotations = False
securitySettings.PermitAssembleDocument = False
securitySettings.PermitExtractContent = False
securitySettings.PermitFullQualityPrint = True
securitySettings.PermitModifyDocument = False
securitySettings.PermitPrint = True
' Create an empty page
Dim page As PdfPage = document.AddPage
' Get an XGraphics object for drawing
Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
Dim img As XImage = XImage.FromGdiPlusImage(imgPermit)
gfx.DrawImage(img, 20, 20)
Dim stream As New MemoryStream()
document.Save(stream, False)
Dim xStream As System.IO.Stream = stream
SendEmail(sEmail, xStream)

在您的邮件中,它的构造与此类似

Dim xStream As New Attachment(pdf, "FILE" + Date.Now.ToString("MM.dd.yyyy") + ".pdf")
mm.Attachments.Add(xStream)

答案 1 :(得分:0)

您需要将GUI与实际逻辑分开。

您可能在OrderExport.aspx中有代码,用于创建PDF并将其保存到磁盘。您应该将该代码放入一个单独的类中,以便您可以从OrderExport.aspx以及带有“发送电子邮件”按钮的页面调用它。同样,从OrderSend.aspx中提取用于发送电子邮件的代码,然后从“发送电子邮件”按钮中调用它。

答案 2 :(得分:0)

关注点分离是最好的解决方案,但是如果你需要一个快速的解决方案 - 不是一个好的解决方案 - 使类和函数公开并像任何其他类一样调用它