我正在尝试在 asp.net core 3.0 应用程序中生成 PDF。已使用 nuget 包添加了 DinkToPdf.dll,并将上述 3 个文件添加到 DinkToPdf 文件夹中。尝试使用 CustomAssemblyLoadContext 加载这些 DLL。
我能够在本地生成 PDF,并将发布代码生成到一个文件夹中。我在发布代码中没有看到 libwkhtmltox.dll。我将这 3 个文件手动添加到发布代码中并托管到 IIS 中。
当我托管到 IIS 时,我面临生成 PDF 的问题。
我正在使用以下代码:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
var data = Path.Combine(Directory.GetCurrentDirectory(), "DinkToPdf", "libwkhtmltox.dll");
CustomAssemblyLoadContext Context = new CustomAssemblyLoadContext();
Context.LoadUnmanagedLibrary(data);
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
}
}
public 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();
}
}
使用以下代码生成 PDF:
public void GenPdf()
{
var globalSettings = new GlobalSettings
{
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
};
var objectSettings = new ObjectSettings
{
HtmlContent = //html content
};
var pdf = new HtmlToPdfDocument()
{
GlobalSettings = globalSettings,
Objects = { objectSettings }
};
var file = _converter.Convert(pdf);
}
请帮我解决这个问题。