Hummus.JS чтение / запись из Google Cloud Storage - PullRequest
0 голосов
/ 01 ноября 2018

По проблеме, о которой я сообщил для 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 преобразование и переключение на потоки.

...