Hummus.JS чтение / запись из Google Cloud Storage

В связи с проблемой, о которой я сообщил для Hummus.js: # 342, у меня возникают проблемы при записи прилагаемого PDF-файла в Google Cloud Storage.

Простейший MWE, использующий функции Firebase, это:

const getRawBody = require('raw-body')
const admin = require('firebase-admin')

function asBuffer (filename) {
  const bucket = admin.storage().bucket()
  const file = bucket.file(filename)
  return getRawBody(file.createReadStream())
}

function writePdf (buffer, writeStream) {
  const pdfWriter = hummus.createWriter(
    new hummus.PDFStreamForResponse(writeStream))
  }
  const rstream = new hummus.PDFRStreamForBuffer(buffer)
  pdfWriter.appendPDFPagesFromPDF(rstream) //  Memory error / timeout.
}

const buffer = asBuffer('gcs-path.pdf')
const file = bucket.file('new.pdf')
const fileOptions = {}
const writeStream = file.createWriteStream(fileOptions)

writePdf(buffer, writeStream)

Функции Firebase последовательно терпят неудачу в appendPDFPagesFromPDF с ошибкой ограничения памяти или тайм-аутом.

Этот рабочий процесс подходит для других типов записываемых потоков (например, memorystream и файловые потоки).

Этот пример можно упростить, жестко запрограммировав простой PDF, но стоит отметить это, поскольку рассматриваемая проблема, похоже, связана с потоковой передачей - и в идеале этот процесс можно было бы еще больше упростить для удаления промежуточного Buffer преобразование и переключение на потоки.

0 ответов

Другие вопросы по тегам