使用 IronPdf 与 .pdf 文件交互会导致内部 CLR 错误 (0x80131506)

Interacting with a .pdf file using IronPdf causes internal CLR error (0x80131506)

我目前正在尝试使用名为 IronPdf. I created a simple Console Application and managed to follow their tutorial 的库与 PDF 文件进行交互,方法是创建 HTML 文件、写入文件、将其另存为 PDF 并访问该 PDF。

但是,每当我尝试进一步使用该 pdf 时,我总是会收到带有以下消息的 ExecutionEngineException:

Fatal error. Internal CLR error. (0x80131506)
 at IronPdf.Pdfium.NativeMethods.FPDFDOC_ExitFormFillEnvironment(IntPtr)
 at IronPdf.Pdfium.PdfFile.Dispose(Boolean)
 at IronPdf.Pdfium.PdfDocument.Dispose(Boolean)
 at IronPdf.Pdfium.PdfDocument.Dispose()
 at IronPdf.PdfDocument.lymdps(System.Collections.Generic.IEnumerable`1<Int32>)
 at IronPdf.PdfDocument.ExtractTextFromPages(Int32, Int32)
 at IronPdf.PdfDocument.ExtractAllText()
 at IronPdfDemo.Program.Main(System.String[])

这是我的代码:

using IronPdf;
...
    static void Main(string[] args)
        {
            //create new html file
            var htmlToPdf = new HtmlToPdf();
            htmlToPdf.PrintOptions.FirstPageNumber = 1;

            //add text to html and save as pdf
            htmlToPdf.RenderHtmlAsPdf("Hello World").SaveAs("html-string.pdf");

            //get pdf
            var pdf = PdfDocument.FromFile("html-string.pdf");

            //print out number of pages, should be 1
            Console.WriteLine(pdf.PageCount);

            //write text from pdf
            Console.WriteLine(pdf.ExtractAllText());
        }

当我试图从文件中提取文本时,在最后一行抛出异常。我已经尝试在网上寻找一些线索,这让我找到了 this post,但似乎没有任何效果。

我的问题是:

  1. 为什么会抛出这个错误?
  2. 我该如何解决?
  3. 0x80131506 代表什么?

0x80131506 是通常由 Interop 引起的致命内部 CLR 错误,而不是 try/catchable。

该错误是由于使用实验性 .NET 运行时间 .NET 5.07 及更高版本当前有一个已知问题/Interop 的重大更改。

.NET 5 最新版没有 LTS 长期支持,是前沿技术与稳定性之间的平衡。

2 种修复方法:

  1. IronPdf 现在在他们的主要分支上有一个修复: https://www.nuget.org/packages/IronPdf/

  2. 目标是更稳定的 .NET 运行 时间(.Net Core 5.0 或 3.1 LTS) .NET 6 将是一个 LTS。在那之前,.Net 3.1 有长期支持并且是稳定的。 https://blog.inedo.com/dotnet/demystifying-lts