Функция Firebase на стороне сервера Pdfmake

Привет, я пытаюсь реализовать pdfmake в облачной функции Firebase, я следовал этому руководству https://pdfmake.github.io/docs/getting-started/server-side/ И это мой код:

const fonts = {
  Dosis: {
    normal: 'fonts/a.ttf',
    bold: 'fonts/a.ttf',
    italics: 'fonts/a.ttf',
    bolditalics: 'fonts/a.ttf',
  }
};

const printer = new Printer(fonts);
var pdfDoc = printer.createPdfKitDocument(myPdfStructure);
pdfDoc.pipe(fs.createWriteStream('document.pdf'))
pdfDoc.end()

это моя папка функций внутри моего проекта

папка

Проблема в том, что я всегда получаю эту ошибку:

> Error: ENOENT: no such file or directory, open 'fonts/a.ttf'
at Object.fs.openSync (fs.js:646:18)
at Object.fs.readFileSync (fs.js:551:33)
at Function.open (/srv/node_modules/pdfkit/js/pdfkit.js:3236:16)
at PDFDocument.font (/srv/node_modules/pdfkit/js/pdfkit.js:3306:33)
at FontProvider.provideFont (/srv/node_modules/pdfmake/src/fontProvider.js:62:58)
at /srv/node_modules/pdfmake/src/textTools.js:319:27
at Array.forEach (<anonymous>)
at measure (/srv/node_modules/pdfmake/src/textTools.js:298:13)
at TextTools.buildInlines (/srv/node_modules/pdfmake/src/textTools.js:32:17)
at DocMeasure.measureLeaf (/srv/node_modules/pdfmake/src/docMeasure.js:235:28)

Вы знаете, как исправить?


person user6146889    schedule 19.03.2020    source источник
comment
Попробуйте lib/fonts/a.ttf вместо fonts/a.ttf, так как относительные пути, вероятно, идут из корня функций package.json, а не из папки lib.   -  person Michael Bleigh    schedule 20.03.2020


Ответы (1)


Я предлагаю переместить папку со шрифтами как непосредственный дочерний элемент functions. Как правило, для настройки TypeScript lib только содержит сгенерированные файлы JS и ничего больше. Это позволяет вам оставить всю папку вне системы управления версиями, поскольку вы можете легко восстановить ее всю.

Со шрифтами в функциях вы должны иметь возможность ссылаться на них как «./fonts/a.ttf».

person Doug Stevenson    schedule 19.03.2020