iText 不断抛出 NullReferenceException

szy*_*bki 5 c# itext asp.net-core

我现在有一个 iText 问题。我用 C# 创建了一个 WindowsForms 应用程序,它使用 iText 生成带有订单的 pdf 文件。我在我的工作中使用它,只是为了节省一些时间并简化我的工作,但它只适合我。大约一周前,我开始创建另一个应用程序,这次是使用 .net 核心技术的 Web 应用程序。

public IActionResult OnPostPrintToPDF()
    {
        byte[] pdfBytes;
        MemoryStream stream = new MemoryStream();
        PdfWriter writer = new PdfWriter(stream);
        PdfDocument pdf = new PdfDocument(writer);
        Document document = new Document(pdf);
        stream.Position = 0;
        Paragraph par;
        par = new Paragraph("Hello world");
        document.Add(par);
        document.Close();
        pdfBytes = stream.ToArray();
        return new FileContentResult(pdfBytes, "application/pdf");
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 iText 时,有一个例外,即使代码看起来相同。我已经尝试过任何示例源代码,但在控制台应用程序 .net 核心和框架中都没有任何效果,我不断收到相同的异常 (System.NullREferenceException),即使在我的第一个应用程序中,到目前为止一切正常。

异常的堆栈跟踪:

System.NullReferenceException HResult=0x80004003 消息=未将对象引用设置为对象的实例。Source=itext.io StackTrace:在 iText.IO.Font.FontCache..cctor()

任何想法会发生什么?

截屏

小智 0

该问题与某种缓存有关。我不太明白是什么,但正如您在代码中看到的那样,当他尝试从缓存加载字体时会生成异常。我意识到在新项目中尝试相同的代码并且它有效后。

所以我清理了解决方案,删除了 bin、obj、.vs,杀死了 IIS Express,删除并重新安装了所有 nuget 软件包,然后再次运行,神奇地它工作了。

然后我只需要对代码进行修复:我使用 HtmlConverter.ConvertToPdf 来生成完整的 pdf,而不是仅生成 15 字节文档的 HtmlConverter.ConvertToDocument。