NodeJS Разделить большой файл PDF на несколько файлов - PullRequest
0 голосов
/ 27 октября 2019

У меня есть приложение, в котором пользователь загружает очень большой файл 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();
};

...