我有以下代码用于测试驱动 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/