javascript - pdfmake - 无法在 vfs 上找到字体文件

标签 javascript fonts pdfmake

我有以下代码用于测试驱动 PDFmake。 我对字体文件的位置有疑问。我看到的文档似乎表明,在拉入 vfs_fonts 文件后,我应该能够看到它们。然而,这对我来说并非如此。

function createPdf(assessmentId: string): string {
  const pdfMake = require('pdfmake/build/pdfmake.js');
  const pdfFonts = require('pdfmake/build/vfs_fonts.js');
  pdfMake.vfs = pdfFonts.pdfMake.vfs;

  //required font setup, requires that you link to the fonts shipped with npm

  const fontDescriptors = {
    Roboto: {
      normal: 'Roboto-Regular.ttf',
      bold: 'Roboto-Medium.ttf',
      italics: 'Roboto-Italic.ttf',
      bolditalics: 'Roboto-Italic.ttf',
    }
  };
  const termpaper = new PdfLayout();
  const docDefinition = termpaper.layout
  const printer = new Printer(fontDescriptors);

  //get a reference to the PdfKit instance, which is a streaming interface

  const pdfDoc = printer.createPdfKitDocument(docDefinition);

  return "pdflocation";
}

执行此代码时出现此错误。

Error:

ENOENT: no such file or directory, open 'Roboto-Medium.ttf' at Error (native) at Object.fs.openSync (fs.js:642:18) at Object.fs.readFileSync (fs.js:510:33) at Object.fontkit.openSync (/user_code/node_modules/pdfmake/node_modules/fontkit/index.js:43:19) at Function.PDFFont.open (/user_code/node_modules/pdfmake/node_modules/pdfkit/js/font.js:14:24) at PDFDocument.font (/user_code/node_modules/pdfmake/node_modules/pdfkit/js/mixins/fonts.js:39:28) at FontProvider.provideFont (/user_code/node_modules/pdfmake/src/fontProvider.js:49:58) at /user_code/node_modules/pdfmake/src/textTools.js:258:27 at Array.forEach (native) at measure (/user_code/node_modules/pdfmake/src/textTools.js:240:13)

我需要做什么才能正确找到这些字体文件?

最佳答案

我也遇到过这个问题。我找到的解决方案是在我的项目中实际包含字体文件。列出的文件位于我项目根目录的“字体”文件夹中,我的代码通过 uri 引用它们:

const fonts = {
    Roboto: {
        normal: 'fonts/Roboto-Regular.ttf',
        bold: 'fonts/Roboto-Medium.ttf',
        italics: 'fonts/Roboto-Italic.ttf',
        bolditalics: 'fonts/Roboto-MediumItalic.ttf'
    }
};

我从here 下载字体文件.

希望这对您有所帮助。

关于javascript - pdfmake - 无法在 vfs 上找到字体文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48835055/

相关文章:

javascript - 如何通过循环在数组中创建负数?

css3 - 从2012年末开始实现@ font-face

javascript - pdfmake 得到错误的页面位置大小

javascript - CreateJS - 为什么在创建 createjs 位图时仅使用路径适用于 Firefox 而不适用于 Chrome

javascript - 下载我在html中选择的文件

wpf - WPF中超链接中的上标/下标

python - Mayavi "Font Size"文本属性是否有效?

css - pdf制作API?是否有样式、字体和功能的列表?

javascript - 使用 pdfmake——在 AngularJS 中生成 pdf 工具

javascript - 显示与原始密码字符数相同的虚拟密码文本