Ошибка NReco HtmlToPdfConverter: указанный исполняемый файл не является допустимым приложением для этой платформы ОС - PullRequest
0 голосов
/ 07 декабря 2018

Я использую 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 голосов
/ 07 декабря 2018

Если вы используете NReco.PdfGenerator пакет nuget, который встраивает двоичные файлы wkhtmltopdf, это может быть возможно, если вы используете класс HtmlToPdfConverter одновременно из разных потоков.Попробуйте сделать следующее:

  • убедитесь, что один и тот же экземпляр класса HtmlToPdfConverter не используется из разных потоков (одновременно).Каждый поток должен иметь свой собственный экземпляр класса HtmlToPdfConverter, и в результате они будут использовать различные процессы wkhtmltopdf.
  • Двоичные файлы wkhtmltopdf извлекаются при первом использовании.Вы можете принудительно выполнить это при запуске приложения (вызвав «GeneratePdf» для выполнения некоторого «поддельного» преобразования), чтобы избежать возможных проблем с извлечением файлов позже.Или вы можете переключиться на пакет nuget NReco.PdfGenerator.LT - это только оболочка - и самостоятельно развернуть wkhtmltopdf (не нужно извлекать двоичные файлы = исполнимый файл не может быть поврежден);обратите внимание, что этот пакет nuget может использоваться только коммерческими пользователями.
...