Похоже, этот вопрос был задали довольно много times с более старыми версиями PDFMake, но не был обновлен тем, что кажется последняя структура каталогов. Кроме того, копирование шрифтов в корневую папку «шрифты» не очень удобно.
Как мне получить серверную версию PDFMake ("pdfmake": "^0.1.31"), работающую на Node.js с включенным файлом vfs_fonts.js?
Установить с помощью npm в командной строке
npm install pdfmake fs --save
Загрузите приложение Node.js index.js со следующим:
var fonts = {
Roboto: {
normal: 'fonts/Roboto-Regular.ttf',
bold: 'fonts/Roboto-Medium.ttf',
italics: 'fonts/Roboto-Italic.ttf',
bolditalics: 'fonts/Roboto-MediumItalic.ttf'
}
};
var PdfPrinter = require('pdfmake/src/printer');
var printer = new PdfPrinter(fonts);
var dd = {
content: [
'First paragraph',
'Another paragraph'
]
}
var pdfDoc = printer.createPdfKitDocument(dd);
pdfDoc.pipe(fs.createWriteStream('basics.pdf')).on('finish',function(){
//success
});
pdfDoc.end();
Хит беги и бац:
/usr/local/bin/node index.js
fs.js:640
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT: no such file or directory, open 'fonts/Roboto-Regular.ttf'
at Error (native)
at Object.fs.openSync (fs.js:640:18)
Проблема, похоже, связана с расположением файлов fonts/Roboto.... На стороне клиента это решается включением файла vfs_fonts.js. На стороне сервера, я не уверен. НЕТ папки шрифтов или файлов .ttf. Метеорный фреймворк пример, который я нашел, не кажется применимым.
Любые идеи? Все официальные примеры ссылаются на папку src/fonts. Не лучший способ использовать серверный модуль установки npm.