【问题标题】:Noto Font not working with jsPDF using VueNoto 字体无法使用 Vue 处理 jsPDF
【发布时间】:2020-12-03 22:05:21
【问题描述】:

我正在尝试使用 jsPDF 生成可以处理每种语言的 PDF。这里的问题是我无法将字体添加到 jsPDF。

这就是我所做的。

  1. Google Noto Fonts 获得字体(到目前为止,我尝试使用 NotoSans 常规和 NotoSerif 常规)

  2. 使用不同的转换器以多种方式转换 .ttf 文件,但主要是Github documentation 中推荐的一种 这是他们的fontconverter

  3. 修改文件导出字体如下:export const Noto = '[Encoded string]';并保存为NotoSerif-Regular-normal.js

  4. 在我的 Vue 文件中添加了导入。import Noto from "@/fonts/Noto/NotoSerif-Regular-normal.js";

  5. 将字体添加到 jsPDF。

    doc.addFileToVFS("Noto.ttf", Noto);
    doc.addFont("Noto.ttf", "Noto", "normal");
    doc.setFont("Noto", "normal");
    doc.setFontSize(16);
    

但是当我尝试创建 PDF 时,我收到以下错误:

jsPDF PubSub Error Font does not exist in vFS, import fonts or remove declaration doc.addFont('Noto.ttf'). 
Error: Font does not exist in vFS, import fonts or remove declaration doc.addFont('Noto.ttf').

知道发生了什么吗?我已经尝试过 jsPDF 和 jsPDF.Debug,但它们无法使用这种字体。

【问题讨论】:

    标签: node.js vue.js jspdf custom-font


    【解决方案1】:

    最后,我不得不做一些改变来实现这一点。首先,font converter 对我来说不能正常工作。我不得不使用这个Base64 Converter 这解决了我的第一个问题。

    我遇到的第二个问题是导入中缺少大括号,因此我将其编辑如下:

    import { Noto } from "@/fonts/Noto/NotoSerif-Regular-normal.js";
    

    这完全解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 2022-08-02
      • 2018-03-06
      • 1970-01-01
      • 2013-11-07
      相关资源
      最近更新 更多