System.DllNotFoundException: '无法加载 DLL 'libwkhtmltox': 找不到指定的模块。 (HRESULT 异常:0x8007007E)'

3

当尝试从HTML模板生成PDF时,出现错误。我有一个用于生成PDF的不同类库,并从另一个控制器调用它。

System.DllNotFoundException:“无法加载DLL'libwkhtmltox':找不到指定的模块。(来自HRESULT的异常:0x8007007E)”


为所导入的 DLL 设置属性 CopyLocaltrue - SH7
查看这个线程,也许会有帮助 https://github.com/rdvojmoc/DinkToPdf/issues/5 - Access Denied
3个回答

0

将您的 csproj 文件配置为强制将 NuGet 程序集复制到生成的输出中:

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

0

https://github.com/rdvojmoc/DinkToPdf/tree/master/v0.12.4下载软件包。

通过自定义程序集引用将其添加到您的项目引用中,并在启动项目中注册。 这是自定义程序集加载上下文,可以从绝对路径加载库。

internal class CustomAssemblyLoadContext : AssemblyLoadContext
{
    public IntPtr LoadUnmanagedLibrary(string absolutePath)
    {
        return LoadUnmanagedDll(absolutePath);
    }
    protected override IntPtr LoadUnmanagedDll(String unmanagedDllName)
    {
        return LoadUnmanagedDllFromPath(unmanagedDllName);
    }

    protected override Assembly Load(AssemblyName assemblyName)
    {
        throw new NotImplementedException();
    }
}

在 Startup.cs 中添加以下代码。 在创建转换器之前调用 CustomAssemblyLoadContext:

CustomAssemblyLoadContext context = new CustomAssemblyLoadContext(); context.LoadUnmanagedLibrary(path);

var converter = new SynchronizedConverter(new PdfTools()); services.AddSingleton(converter); services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));


0

如果您正在Docker中运行应用程序,则需要更新以安装.NET Core的libwkhtmltox依赖项。

# Install libwkhtmltox dependencies
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        zlib1g \
        fontconfig \
        libfreetype6 \
        libx11-6 \
        libxext6 \
        libxrender1 \
        libjpeg62-turbo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接