Noto 字体无法使用 Vue 与 jsPDF 一起使用

Noto Font not working with jsPDF using Vue

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

这就是我所做的。

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

  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,但它们无法使用这种字体。

最后,我不得不做一些改变来实现这一点。首先,font converter was not working properly for me. I had to use this Base64 Converter 这解决了我的第一个问题。

我遇到的第二个问题是导入中缺少大括号,所以我这样编辑它:

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

这完全解决了我的问题。