代码之家  ›  专栏  ›  技术社区  ›  Christopher

加载本地字体以生成PDF

  •  0
  • Christopher  · 技术社区  · 4 年前

    我正在尝试使用生成PDF文件 PuppeteerSharp 其中包括一个外部必需的 *.TFF 字体文件。

    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 issue .

    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方法

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

    问候语

    0 回复  |  直到 4 年前
    推荐文章