gpt4 book ai didi

c#-4.0 - 如何在 ASP.Net MVC 中使用 PdfSharp 显示 PDF?

转载 作者:行者123 更新时间:2023-12-02 20:20:47 26 4
gpt4 key购买 nike

我们正在制作一个 ASP.Net MVC 应用程序,它需要能够生成 PDF 并将其显示到屏幕上或将其保存在用户易于访问的位置。我们使用 PdfSharp 来生成文档。完成后,我们如何让用户保存文档或在阅读器中打开它?我特别困惑,因为 PDF 是在服务器端生成的,但我们希望它显示在客户端。

<小时/>

这是用于创建我们迄今为止编写的报告的 MVC Controller :

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);
}
}

当它运行时,我得到一个 UnauthorizedAccessExceptiondocumentRenderer.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
}
}

最佳答案

使用 Yarx 的建议和 PDFsharp 团队的教程,这是我们最终得到的代码:

Controller :

[HttpGet]
public ActionResult GenerateReport(ReportPdfInput input)
{
using (MemoryStream stream = new MemoryStream())
{
var manager = new ReportPdfManagerFactory().GetReportPdfManager();
var document = manager.GenerateReport(input);
document.Save(stream, false);
return File(stream.ToArray(), "application/pdf");
}
}

报告Pdf管理器:

public PdfDocument GenerateReport(ReportPdfInput input)
{
var document = CreateDocument(input);
var renderer = new PdfDocumentRenderer(true,
PdfSharp.Pdf.PdfFontEmbedding.Always);
renderer.Document = document;
renderer.RenderDocument();

return renderer.PdfDocument;
}

private Document CreateDocument(ReportPdfInput input)
{
//Creates a Document and puts content into it
}

关于c#-4.0 - 如何在 ASP.Net MVC 中使用 PdfSharp 显示 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15121876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com