I’m using Iron Pdf, but there is a problem when using external fonts using imports through @font-face.
Even setting a delay on firstrender, in production it returns a blank PDF.
Would anyone have an alternative to resolve it?
Below is an example of the code that is rendering the HTML/CSS:
try
{
_logger.Debug(LogContext, "start chrome render", options);
var renderer = new ChromePdfRenderer
{
RenderingOptions = CreateRenderOptionsFrom(options)
};
if (_isFirstRender)
{
_logger.Debug(LogContext, "first render");
//We need to add a delay in the render process because we are using external fonts on the template,
//after the first render, this does not look like a issue anymore. Link below for refence
//https://ironpdf.com/examples/google-fonts-htmltopdf/
_isFirstRender = false;
#if DEBUG
renderer.RenderingOptions.RenderDelay = 500;
#else
renderer.RenderingOptions.RenderDelay = 1200;
#endif
}
var (first, rest) = pages;
_logger.Debug(LogContext, "creating first page");
var pdf = await renderer.RenderHtmlAsPdfAsync(first);
_logger.Debug(LogContext, "created first page");
foreach (var page in rest)
{
_logger.Debug(LogContext, "creating next page");
var newPage = await renderer.RenderHtmlAsPdfAsync(page);
pdf.AppendPdf(newPage);
_logger.Debug(LogContext, "created next page");
}
_logger.Debug(LogContext, "reading stream");
using var ms = pdf.Stream;
var buffer = await ms.GetBufferAsync(cancellationToken: cancellationToken);
var file = FileRaw.Create(buffer, ExtensionMap.pdf);
_logger.Debug(LogContext, "readed stream");
return file.AsRight<Exception, FileRaw>();
}
catch (Exception ex)
{
return ex.AsLeft<Exception, FileRaw>();
}
I tried setting a render timer, for the first render, for loading the fonts, and before rendering the PDF, but it doesn’t work well on my local host.
I also tried to follow some steps in the documents, like this https://ironpdf.com/how-to/manage-fonts/
but we can’t update to the latest due to incompatibility with another lib
Lucas Samuel is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.