首页 > 解决方案 > 加载本地字体以生成 PDF

问题描述

我正在尝试生成PuppeteerSharp包含外部必需*.TFF字体文件的 PDF 文件。

CSS:

@font-face {
    font-family: 'my-awesome-font';
    src: url('<path-to-local-tff-file>');
} 

.my-awesome-font {
  font-family: 'my-awesome-font';
}

HTML:

<div class="my-awesome-font">Some value</div>

主要问题是,我如何告诉 PuppeteerSharp 等待所有外部内容文件?

我已经通过创建静态 HTML 页面手动测试了我的 TFF 文件,并且效果很好。所以我从一个很长的Github 问题中尝试了几个建议。

1. 直接添加字体作为内容

await page.AddStyleTagAsync(new AddTagOptions
{
  Content = "@font-face { font-family: 'barcode'; src: url('{" + barcodeTFFPath + "}'); }"
});

2.等待外部字体

var session = await page.Target.CreateCDPSessionAsync();
await session.SendAsync("DOM.enable");
await session.SendAsync("CSS.enable");
session.MessageReceived += (sender, e) =>
{
  if (e.MessageID == "CSS.fontsUpdated")
  {
    Console.WriteLine("CSS.fontsUpdated");
  }
};

3.调用Goto方法

我没有任何想法这样做,因为我string通过渲染*.cshtml具有动态内容属性的文件来获取 HTML。

问候

标签: puppeteer-sharp

解决方案


推荐阅读