首页 > 解决方案 > 无法访问已关闭的流 && HTMLWorker 已过时

问题描述

我正在尝试使用 iTextSharp 和 StringBuilder (sb) 生成 PDF。我从我的控制器中调用它作为一个函数。我收到错误“无法访问已关闭的流。”。为什么我会收到此错误,我该如何解决?

控制器:

public async Task<IActionResult> SubmitAsync(IFormCollection formCollection)
{
            /* Some Async logic for image verification */

            string sb = PdfTextBuilder(); // Generates a StringBuilder.ToString() to display in the PDF
            GeneratePdf(sb);

            /* Return & catch error statements
    }

生成PDF功能:

private void GeneratePdf(string sb)
{
    StringReader sr = new StringReader(sb);

    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    MemoryStream memoryStream = new MemoryStream();
    PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
    pdfDoc.Open();

    htmlparser.Parse(sr);
    pdfDoc.Close();

    byte[] bytes = memoryStream.ToArray();

    FileStream file = new FileStream("App_Data/imgs/test.pdf", FileMode.Create, FileAccess.Write);
    memoryStream.WriteTo(file);
    file.Close();


    memoryStream.Close();
}

对于奖励积分:我收到警告“HTMLWorker 已过时”。我知道 HTMLWorker 已被弃用,但它似乎仍在工作。如何实现一个新类来替换过时的 HTMLWorker?

标签: c#asp.net.netitext

解决方案


推荐阅读