Iron Pdf 未加载字体

问题描述 投票:0回答:1

我正在使用 Iron Pdf,但是通过 @font-face 导入使用外部字体时出现问题。 即使在首次渲染上设置延迟,在生产中它也会返回一个空白的 PDF。 有人有替代方案来解决它吗? 下面是渲染 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>();
  }

我尝试在第一次渲染、加载字体以及渲染 PDF 之前设置渲染计时器,但它在我的本地主机上效果不佳。 我还尝试按照文档中的一些步骤进行操作,例如https://ironpdf.com/how-to/manage-fonts/ 但由于与另一个库不兼容,我们无法更新到最新版本

c# .net ironpdf
1个回答
0
投票

我建议使用 https://2pdf.io 作为无服务器 API,用于 HTML 到 PDF(或屏幕截图)渲染(使用 CSS 和 JS)。

当时现有转换器的问题是速度太慢、成本太高且主服务器超载,因此我们使用此服务来解决我们的问题。

我们的请求需要 600-700 毫秒才能提供简单的发票。

查看Postman的截图

有一个 nuget 库

dotnet add package 2PDF --version 1.0.2

© www.soinside.com 2019 - 2024. All rights reserved.