3

我正在使用带有 fromHtml 插件的 jsPDF 库从 HTML 内容生成 pdf 文档,它运行良好。

现在我也在尝试使用这个插件添加自定义字体: https ://github.com/sphilee/jsPDF-CustomFonts-support

但是,这两个插件似乎不能很好地相互交互,当我生成 pdf 时,它会切换到标准字体。

当我单独使用自定义字体插件时,它可以工作。

这是我的代码:

    var pdf = new jsPDF('p', 'pt', 'letter');
    pdf.addFileToVFS('CustomFont.tff', 'base64 of .tff file');
    pdf.addFont('CustomFont.tff', 'CustomFont', 'normal');
    pdf.setFont('CustomFont');
    var source = $('#pdf')[0];
    var margins = {
        top: 50,
        bottom: 60,
        left: 40,
        width: 520
    };
    pdf.fromHTML(
        source,
        margins.left,
        margins.top, {
            'width': margins.width, 
            'elementHandlers': specialElementHandlers
        },
        function (dispose) {
            pdf.save('Test.pdf');
        }, margins);
4

1 回答 1

1

我今天也遇到了这个问题。原来jsPDF内置了对自定义字体的支持。所以你不需要再包含jspdf.customfonts.js了。

您仍然可以使用jspdf-customfonts生成default_vfs.js文件:

(function (jsPDFAPI) { 
"use strict";
jsPDFAPI.addFileToVFS('somefont.ttf','AAEAAA...');
})(jsPDF.API);

然后在您的代码中,您可以使用以下代码使用该字体:

pdf.addFont('somefont.ttf', 'somefont', 'normal');
pdf.setFont('somefont');

关于如何生成的说明default_vfs.js

  1. npm installnode_modules\jspdf-customfonts目录内运行
  2. 将字体复制到字体子目录中。
  3. 运行node makeFonts.js创建default_vfs.js.
于 2018-11-12T13:20:20.360 回答