我具有以下功能,该功能创建了html页面的PDF。
[Authorize]
public FileStreamResult PDFCV(int Id)
{
var user = _userManager.GetUserAsync(User);
HtmlToPdf converter = new HtmlToPdf();
var BaseUrl = HttpContext.Request.Host;
var Path = Url.Action("PreviewCv", "Cv", new { Id = Id });
try
{
converter.Options.HttpCookies.Add(".AspNetCore.Identity.Application", HttpContext.Request.Cookies[".AspNetCore.Identity.Application"]);
}
catch (Exception e)
{
Console.WriteLine(e);
}
string url = "";
try
{
url = BaseUrl + Path;
}
catch (Exception e)
{
Console.WriteLine(e);
}
try
{
PdfDocument doc = converter.ConvertUrl(url);
var PdfArray = doc.Save();
doc.Close();
return new FileStreamResult(new MemoryStream(PdfArray), "application/pdf");
}
catch (Exception e)
{
Console.WriteLine(e);
}
return new FileStreamResult(new MemoryStream(), "application/pdf");
}
此功能使我可以获取HTML页面的PDF。
但是,似乎无法添加外部CSS。
我将其添加到HTML文件的头部。
<head>
<link href="https://fonts.googleapis.com/css?family=Montserrat"
</head>
直接访问页面"/pdfpreview"时,我会获得正确的CSS。
关于如何强制选择PDF使用正确的CSS的任何建议?
尝试在转换之前添加延迟,以允许字体文件下载:
// specify the number of seconds the conversion is delayed
converter.Options.MinPageLoadTime = 2;
i在select.pdf.netcore中使用的 ConvertUrl()
方法,并得到错误的字体。当我切换到select.pdf.netcore.blink软件包时,我发现它开始工作。我必须添加以下行:
converter.Options.RenderingEngine = RenderingEngine.Blink;