当尝试从HTML模板生成PDF时,出现错误。我有一个用于生成PDF的不同类库,并从另一个控制器调用它。
System.DllNotFoundException:“无法加载DLL'libwkhtmltox':找不到指定的模块。(来自HRESULT的异常:0x8007007E)”
当尝试从HTML模板生成PDF时,出现错误。我有一个用于生成PDF的不同类库,并从另一个控制器调用它。
System.DllNotFoundException:“无法加载DLL'libwkhtmltox':找不到指定的模块。(来自HRESULT的异常:0x8007007E)”
将您的 csproj 文件配置为强制将 NuGet 程序集复制到生成的输出中:
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
从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();
}
}
CustomAssemblyLoadContext context = new CustomAssemblyLoadContext(); context.LoadUnmanagedLibrary(path);
var converter = new SynchronizedConverter(new PdfTools()); services.AddSingleton(converter); services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
如果您正在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
CopyLocal
为true
。 - SH7