我们正在制作一个 ASP.Net MVC 应用程序,该应用程序需要能够生成 PDF 并将其显示到屏幕上或将其保存在便于用户访问的位置。我们正在使用 PdfSharp 生成文档。完成后,我们如何让用户保存文档或在阅读器中打开它?我特别困惑,因为 PDF 是在服务器端生成的,但我们希望它显示在客户端。
这是创建我们迄今为止编写的报告的 MVC 控制器:
public class ReportController : ApiController
{
private static readonly string filename = "report.pdf";
[HttpGet]
public void GenerateReport()
{
ReportPdfInput input = new ReportPdfInput()
{
//Empty for now
};
var manager = new ReportPdfManagerFactory().GetReportPdfManager();
var documentRenderer = manager.GenerateReport(input);
documentRenderer.PdfDocument.Save(filename); //Returns a PdfDocumentRenderer
Process.Start(filename);
}
}
当它运行时,我得到一个UnauthorizedAccessException
说documentRenderer.PdfDocument.Save(filename);
,Access to the path 'C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\report.pdf' is denied.
我也不确定Process.Start(filename);
执行该行时会发生什么。
这是中的代码manager.GenerateReport(input)
:
public class ReportPdfManager : IReportPdfManager
{
public PdfDocumentRenderer GenerateReport(ReportPdfInput input)
{
var document = CreateDocument(input);
var renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always);
renderer.Document = document;
renderer.RenderDocument();
return renderer;
}
private Document CreateDocument(ReportPdfInput input)
{
//Put content into the document
}
}