Asp.net 如何调用创建pdf的页面

Asp.net 如何调用创建pdf的页面,asp.net,vb.net,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,而不向用户显示电子邮件 我需要确保发

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

在我的OrderSend.aspx页面中,我有一个功能,可以发送一封附有pdf文件的电子邮件,如下所示:

Dim atc As Net.Mail.Attachment = New Attachment(stm, fileNameOrder)
mail.Attachments.Add(atc)
在发送电子邮件之前,如何在此函数中调用OrderExport.aspx,而不向用户显示电子邮件


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

您可能希望创建一个类而不是一个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)

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


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

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

我编辑了您的标题。请看“”,其中的共识是“不,他们不应该”。这里的用户界面是什么?是否有一个页面,用户可以单击按钮创建PDF并通过电子邮件发送?ASP.NET页面上有一个名为“发送电子邮件”的按钮。单击此按钮时,应首先创建pdf。pdf文件是在OrderExport.aspx运行时创建的。我使用ReportViewer创建pdf,因此在本项目中,我更愿意坚持使用它。当pdf文件只在内存中创建时,我现在遇到超时问题,这就是为什么我要先在硬盘上创建pdf文件,然后再发送它的原因。不幸的是,我不熟悉语法,所以我不得不问你们。我列出的语法与你们使用的库无关。这听起来像是pdf创建花费了太长的时间,这就是为什么您首先会得到超时。你可以做一些优化。除此之外,您仍然需要将其放入类而不是aspx页面,调用写入服务器的类,然后尝试将该文件附加到电子邮件