无法使用DinkToPDF在IIS中生成PDF并在本地工作



我正在尝试在asp.net核心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);
}

请帮我解决这个问题。

services.AddControllersWithViews();
var architectureFolder = (IntPtr.Size == 8) ? "64 bit" : "32 bit";
var wkHtmlToPdfPath = Path.Combine(_hostingEnvironment.ContentRootPath, $"wkhtmltox\v0.12.4\{architectureFolder}\libwkhtmltox");
CustomAssemblyLoadContext context = new CustomAssemblyLoadContext();
context.LoadUnmanagedLibrary(wkHtmlToPdfPath);

我们必须添加上面的代码来加载程序集,它在iis和kubernet中对我有效

https://www.nuget.org/packages/Haukcode.WkHtmlToPdfDotNet/在从netcoreapp2.1升级到netcoreapp3.1时对我有效。

将您的裁判替换为DinkToPdf:

using WkHtmlToPdfDotNet;
using WkHtmlToPdfDotNet.Contracts;

我使用了Haukcode.WkHtmlToPdfDotNet版本1.4.0,我的libwkhtmltopdf是0.12.6

最新更新