1

我目前正在尝试使用名为IronPdf的库与 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());
        }

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

我的问题是:

  1. 为什么会抛出此错误?
  2. 我如何解决它?
  3. 代表什么0x80131506
4

1 回答 1

1

0x80131506 是致命的内部 CLR 错误,通常源于互操作并且不可尝试/捕获。

该错误是由于使用实验性 .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

于 2021-08-11T02:32:27.247 回答