У меня есть приложение, в котором пользователь загружает очень большой файл PDF (1 ГБ), и мне нужно разделить этот файл на несколько документов PDF (каждый длиной 2 страницы) и сопоставить их с соответствующим пользователем, я использую hummusJS
чтобы сделать работу, но запрос POST занимает много времени, кто-нибудь знает хорошую альтернативу для этого?
вот мой код:
const hummus = require('hummus');
const streams = require('memory-streams');
const PDFRStreamForBuffer = require('../pdf-stream-for-buffer.js');
const getPages = (buffer, offset = 0, numberOfPages = 2) => {
//Creating a stream, so hummus pushes the result to it
let outStream = new streams.WritableStream();
//Using PDFStreamForResponse to be able to pass a writable stream
let pdfWriter = hummus.createWriter(new hummus.PDFStreamForResponse(outStream));
//Using our custom PDFRStreamForBuffer adapter so we are able to read from buffer
let copyingContext = pdfWriter.createPDFCopyingContext(new PDFRStreamForBuffer(buffer));
//Get the first page.
copyingContext.appendPDFPageFromPDF(offset);
copyingContext.appendPDFPageFromPDF(offset + 1);
//We need to call this as per docs/lib examples
pdfWriter.end();
//Here is a nuance.
//HummusJS does it's work SYNCHRONOUSLY. This means that by this line
//everything is written to our stream. So we can safely run .end() on our stream.
outStream.end();
//As we used 'memory-stream' and our stream is ended
//we can just grab stream's content and return it
return outStream.toBuffer();
};