Как использовать pdfkit с netlify-lambda? - PullRequest
0 голосов
/ 12 июля 2019

Я пытаюсь использовать 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, поскольку я не использую ее в браузере.

Любая помощь будет высоко ценится.

...