我在 Azure 网站中使用 MvcRazorToPdf 并创建我的 PDF 并将它们输出到浏览器中。
现在我正在创建一个新功能,以将 PDF 作为附件直接通过电子邮件发送(而不在浏览器中输出)。
有人知道是否可以将 PDF(使用 MvcRazorToPdf)保存为 MemoryStream 或 Byte[]?
我在 Azure 网站中使用 MvcRazorToPdf 并创建我的 PDF 并将它们输出到浏览器中。
现在我正在创建一个新功能,以将 PDF 作为附件直接通过电子邮件发送(而不在浏览器中输出)。
有人知道是否可以将 PDF(使用 MvcRazorToPdf)保存为 MemoryStream 或 Byte[]?
我认为您可以在 ResultFilter 中处理此问题,我使用以下代码允许用户下载文件并提示下载弹出窗口,这样您就可以获取所有内存流并将其存储在某处以发送电子邮件后记。
public class ActionDownloadAttribute : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Response.AddHeader("content-disposition", "attachment; filename=" + "Report.pdf");
base.OnResultExecuted(filterContext);
}
}
[ActionDownload]
public ActionResult GeneratePdf()
{
List<Comment> comments = null;
using (var db = new CandidateEntities())
{
comments = db.Comments.ToList();
}
return new PdfActionResult("GeneratePdf", comments);
}
我已经实现了类似的东西。所以基本上我没有改变我的输出PDF的方法。我所做的是使用 restsharp 在我获取 PDF 的 URL 上发出请求,然后你所拥有的是几行(这只是部分代码,所以你可以得到想法)
var client = new RestClient(IAPIurl);
var request = new RestRequest(String.Format(IAPIurl_generatePDF, targetID), Method.GET);
RestResponse response = (RestResponse) client.Execute(request);
// Here is your byte array
response.RawBytes
否则,您可以使用我在此处讨论直接返回文件的答案。
希望这可以帮助!