Noto字体无法使用Vue处理jsPDF



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

这就是我所做的。

  1. 从Google Noto Fonts获得字体(到目前为止,我尝试了NotoSans regular和NotoSerif regular(

  2. 使用不同的转换器以多种方式转换.ttf文件,但主要是Github文档中建议的转换器这是他们的字体转换器。

  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.调试,但它们不适用于这种字体。

最后,我不得不做一些更改来实现这一点。首先,字体转换器对我来说工作不正常。我不得不使用这个Base64转换器这解决了我的第一个问题。

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

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

这完全解决了我的问题。

最新更新