1

我使用 NReco HtmlToPdfConverter 并且通常它可以正常工作。但有时我会遇到以下错误:

Cannot generate PDF: The specified executable is not a valid application for this OS platform.

代码很简单,它是一个单调类:

public class Converter : IConverter
{
    private readonly object lockObject = new object();

    public Converter()
    {
        HtmlToPdf = new HtmlToPdfConverter();
    }

    private HtmlToPdfConverter HtmlToPdf { get; }

    public byte[] GeneratePdf(string htmlContent)
    {
        lock (lockObject)
        {
            return HtmlToPdf.GeneratePdf(htmlContent);
        }
    }
}

有谁知道这种错误的原因是什么?

4

1 回答 1

0

如果您使用嵌入 wkhtmltopdf 二进制文件的NReco.PdfGenerator nuget 包,如果您同时从不同线程使用 HtmlToPdfConverter 类,则可能会出现这种情况。尝试执行以下操作:

  • 确保不同线程(同时)不使用 HtmlToPdfConverter 类的相同实例。每个线程都应该有自己的 HtmlToPdfConverter 类实例,因此它们将使用不同的 wkhtmltopdf 进程。
  • wkhtmltopdf 二进制文件在首次使用时被提取。您可以在应用程序启动时强制执行此操作(通过调用“GeneratePdf”来执行一些“假”转换)以避免以后提取文件时可能出现的问题。或者,您可以切换到 NReco.PdfGenerator.LT nuget 包 - 这只是包装器 - 并自行部署 wkhtmltopdf(无需提取二进制文件 = 可执行文件不能被损坏);请注意,此 nuget 包只能由商业用户使用。
于 2018-12-07T17:14:22.490 回答