c# - 无法访问已关闭的流 && 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?
解决方案
推荐阅读
- sql-server - 将计算字段/计算列中版本号最高的记录标记为“真”,其余为假
- api - 如何为 Azure AD 上托管的 WebAPI 生成令牌?
- angular - 我的 ngIf Else 在 Angular 6 中没有按预期工作
- javascript - 直接从节点读取系统声音
- node.js - 无法将对象推送到 Mongodb 集合中的数组中,但插入了 Id
- c# - 使用 Auto IT 脚本处理基于窗口的弹出窗口后,Selenium 脚本失败
- gtk - GtkLabel 在水平框中垂直展开
- ios - 如何在 ios swift 中使用 sobel 边缘检测/canny 边缘检测在有限的边缘边界内使用钢笔工具为我的草图着色?
- javascript - 暂停和恢复本地存储中的计数值
- vb.net - 以字典为属性的类