如何使用iText返回PDF

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用iText返回PDF相关的知识,希望对你有一定的参考价值。

我正在尝试返回带有简单文本的PDF,但是在下载文档时出现以下错误:无法加载PDF文档。任何有关如何解决此问题的想法都将受到赞赏。

MemoryStream ms = new MemoryStream();

PdfWriter writer = new PdfWriter(ms);
PdfDocument pdfDocument = new PdfDocument(writer);
Document document = new Document(pdfDocument);

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

//document.Close();
//writer.Close();

ms.Position = 0;

string pdfName = $"IP-Report-{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.pdf";

return File(ms, "application/pdf", pdfName);
答案

您必须关闭编写器而不关闭基础流,这将刷新其内部缓冲区。照原样,该文档并未完全写入内存流。除ms之外的所有内容也都应位于using中。

您可以通过检查代码中的ms的长度与下面的代码来验证这种情况。

MemoryStream ms = new MemoryStream();

using (PdfWriter writer = new PdfWriter(ms))
using (PdfDocument pdfDocument = new PdfDocument(writer))
using (Document document = new Document(pdfDocument))
{
    writer.CloseStream = false;
    document.Add(new Paragraph("Hello World"));
}

ms.Position = 0;

string pdfName = $"IP-Report-{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.pdf";

return File(ms, "application/pdf", pdfName);

以上是关于如何使用iText返回PDF的主要内容,如果未能解决你的问题,请参考以下文章

如何使用iText返回PDF

iText7高级教程之html2pdf——2.使用CSS定义样式

iText7高级教程之html2pdf——2.使用CSS定义样式

iText7高级教程之html2pdf——2.使用CSS定义样式

iText 7 从 Asp.Net WebApi 返回 Pdf

java itext 创建pdf,直接返回输出流做成下载,怎么做