【问题标题】:NReco HtmlToPdfConverter error: The specified executable is not a valid application for this OS platformNReco HtmlToPdfConverter 错误:指定的可执行文件不是此 OS 平台的有效应用程序
【发布时间】:2019-05-09 06:04:17
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 是的,我从不同的线程生成 pdf 并使用多个服务器。但我使用 lock 语句以便在一台机器内同步它。我会尝试在应用启动时调用“GeneratePdf”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 2020-07-13
    • 2018-03-30
    相关资源
    最近更新 更多