NReco HtmlToPdfConverter错误:指定的可执行文件不是此OS平台的有效应用程序

时间:2018-12-07 12:59:57

标签: c# pdf-generation html-to-pdf nreco

我使用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);
        }
    }
}

有人知道导致这种错误的原因是什么吗?

1 个答案:

答案 0 :(得分:0)

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

  • 确保不从不同线程(同时)使用HtmlToPdfConverter类的同一实例。每个线程应具有自己的HtmlToPdfConverter类实例,结果,它们将使用不同的wkhtmltopdf进程。
  • wkhtmltopdf二进制文件是在首次使用时提取的。您可以在应用程序启动时强制执行此操作(通过调用“ GeneratePdf”执行一些“伪”转换),以避免以后文件提取时可能出现的问题。或者,您可以切换到NReco.PdfGenerator.LT nuget包-这是仅包装程序-并自己部署wkhtmltopdf(无需提取二进制文件=可执行文件不会被破坏);请注意,此nuget软件包只能由商业用户使用。