gpt4 book ai didi

c# - 如何在 MVC 中将 PDF 返回给浏览器?

转载 作者:IT王子 更新时间:2023-10-29 03:34:12 26 4
gpt4 key购买 nike

我有这个 iTextSharp 的演示代码

    Document document = new Document();
try
{
PdfWriter.GetInstance(document, new FileStream("Chap0101.pdf", FileMode.Create));

document.Open();

document.Add(new Paragraph("Hello World"));

}
catch (DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
catch (IOException ioe)
{
Console.Error.WriteLine(ioe.Message);
}

document.Close();

如何让 Controller 返回pdf文档给浏览器?

编辑:

运行此代码确实打开了 Acrobat,但我收到一条错误消息“文件已损坏且无法修复”

  public FileStreamResult pdf()
{
MemoryStream m = new MemoryStream();
Document document = new Document();
PdfWriter.GetInstance(document, m);
document.Open();
document.Add(new Paragraph("Hello World"));
document.Add(new Paragraph(DateTime.Now.ToString()));
m.Position = 0;

return File(m, "application/pdf");
}

知道为什么这不起作用吗?

最佳答案

返回一个FileContentResult。 Controller 操作的最后一行类似于:

return File("Chap0101.pdf", "application/pdf");

如果您动态生成此 PDF,最好使用 MemoryStream,并在内存中创建文档而不是保存到文件中。代码将类似于:

Document document = new Document();

MemoryStream stream = new MemoryStream();

try
{
PdfWriter pdfWriter = PdfWriter.GetInstance(document, stream);
pdfWriter.CloseStream = false;

document.Open();
document.Add(new Paragraph("Hello World"));
}
catch (DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
catch (IOException ioe)
{
Console.Error.WriteLine(ioe.Message);
}

document.Close();

stream.Flush(); //Always catches me out
stream.Position = 0; //Not sure if this is required

return File(stream, "application/pdf", "DownloadName.pdf");

关于c# - 如何在 MVC 中将 PDF 返回给浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1510451/

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