Я пытаюсь использовать pdfkit
с netlify-lambda
следующим образом:
const PDFDocument = require("pdfkit")
const { Base64Encode } = require("base64-stream")
const getPDFStream = () => {
// Create a document
const doc = new PDFDocument()
// write to PDF
doc.text("Hello World", 50, 50)
doc.end()
let finalString = "" // contains the base64 string
const stream = doc.pipe(new Base64Encode())
stream.on("data", function(chunk) {
finalString += chunk
})
return new Promise((resolve, reject) => {
stream.on("end", () => resolve(finalString))
stream.on("error", reject)
})
}
exports.handler = async (event, context, callback) => {
try {
const pdfStream = await getPDFStream()
return {
statusCode: 200,
isBase64Encoded: true,
headers: {
"Content-type": "application/pdf",
"accept-ranges": "bytes",
},
body: pdfStream,
}
} catch (error) {
console.log(error)
}
}
Но я получаю эту ошибку: ENOENT: no such file or directory, open '//data.trie'
.
Также я заметилПриведенный выше код работает при импорте автономной версии pdfkit
следующим образом:
const PDFDocument = require("pdfkit/js/pdfkit.standalone.js")
Но мне нужен доступ к файловой системе, чтобы добавлять изображения и шрифты.
Для шрифтов это работало длямне сначала прочитать файлы шрифтов, используя fs.readFileSync
, например:
...
const fs = require("fs")
const customFont = fs.readFileSync("node_modules/orgdot-org-v01/Orgv01.woff")
...
doc.font(customFont).text("Hello World", 50, 50)
...
Но то же самое не работает для изображений.Кроме того, я не думаю, что в первую очередь мне следует использовать автономную версию pdfkit
, поскольку я не использую ее в браузере.
Любая помощь будет высоко ценится.