【发布时间】:2020-01-28 13:51:02
【问题描述】:
我正在尝试在我的 React 项目中的 jsPDF 中添加字体。我使用提供的生成器将字体转换为 base64 和 .js 脚本:https://rawgit.com/MrRio/jsPDF/master/fontconverter/fontconverter.html
我将字体脚本导入为:
import '../../assets/fonts/js/Muli-normal';
其中Muli-normal 是使用生成器从Muli.ttf 转换而来的Muli-normal.js 文件。我用
doc.setFont('Muli')
但我得到了错误
Line 10:5: 'jsPDF' is not defined no-undef
脚本如下:
// ../../assets/fonts/js/Muli-normal.js
(function (jsPDFAPI) {
var font = 'AAEAAAASAQAABAAgRkZUTW2ZUGwAAAE..
...
...
...ASAQAAB';
var callAddFont = function () {
this.addFileToVFS('Muli-normal.ttf', font);
this.addFont('Muli-normal.ttf', 'Muli', 'normal');
};
jsPDFAPI.events.push(['addFonts', callAddFont])
})(jsPDF.API);
【问题讨论】:
-
...为什么需要将其转换为 base64,然后将其打包?它是一个静态资产,只需直接链接到它。请参阅Custom font faces in jsPDF? 了解如何做到这一点,而不是让您的捆绑包变得不必要地庞大,而数据一开始是静态的,并且一开始就不应该放在捆绑包中。
-
因为jsPDF需要base64字体?我查找了文档和 Stackoverflow 问题,其中大多数首先将字体转换为 .js 并添加到包中。我不想仅添加 .ttf 文件的副本,但这是我找到的唯一可行的解决方案。我尝试了您提供的链接中的代码,但无法使其工作。我要这样添加吗?我猜PR已经制作好了,所以我不必修改源代码。字体添加了
@font-face。这不起作用:doc.addFont('Muli', 'Muli', 'normal', 'StandardEncoding'); doc.setFont('Muli');