Como faço para exibir um PDF usando PdfSharp no asp.net MVC?
Estamos criando um aplicativo ASP.Net MVC que precisa gerar um PDF e exibi-lo na tela ou salvá-lo em um local fácil para o usuário acessar. Estamos usando o PdfSharp para gerar o documento. Uma vez terminado, como deixamos o usuário salvar o documento ou abri-lo em um leitor? Estou especialmente confuso porque o PDF é gerado no lado do servidor, mas queremos que ele apareça no lado do cliente.
Aqui está o controlador MVC para criar o relatório que escrevemos até agora:
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);
}
}
Quando isso é executado, recebo umUnauthorizedAccessException
adocumentRenderer.PdfDocument.Save(filename);
isso diz,Access to the path 'C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\10.0\report.pdf' is denied.
Eu também não tenho certeza do que vai acontecer quando a linhaProcess.Start(filename);
É executado.
Este é o código emmanager.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
}
}