2016-07-18 3 views
4

pdf-merge предоставляет api для слияния файлов PDF, но он не подходит при попытке объединить буферы или потоки. При попытке объединить эти буферы стандартным образом или через пакеты (aka Buffer.concat, stream-concat, buffer-concat) результат включает только последний поток вместо объединенного результата.nodejs: merging pdf streams buffers

Как мне кажется, все больше людей столкнулись с этой проблемой, но никакого решения не было представлено (пример: NodeJS: Merge two PDF files into one using the buffer obtained by reading them)

Я предполагаю, что это связано с уникальным представлением файла PDF.

Я также попробовал addContent pdfkit (буфер), но в результате получился пустой файл и, по-видимому, он не поддерживается (https://github.com/devongovett/pdfkit/issues/417).

Неужели кто-нибудь испытывал эту проблему и заставлял ее работать? Мы должны использовать потоки для проблем с производительностью (поэтому смягчение с помощью файлов не является вариантом).

Спасибо.

ответ

1

Я нашел node-pdftk, чтобы быть полезен для этого. Просто передав массив буферов как input, а затем сразу же превратив его в output, вы должны получить объединенный набор PDF-файлов.

npm i node-pdftk

const pdfs = [...] // array of PDF buffers 

pdftk 
    .input(pdfs) 
    .output() 
    .then(buf => { 
    res.type('application/pdf'); 
    res.send(buf); 
    });