Стоит задача реализовать создание многостраничного pdf или tif файла из имеющихся изображений с помощью graphicsmagick или imagemagick. Простейшим способом реализовать это - использовать команду
gm convert 1.jpg 2.jpg ... result.pdf
Но что делать, если на момент создания результирующего многостраничного изображения не имеется исходных графических файлов, а имеются заполненные бинарными данными исходных изображений объекты Buffer в nodejs?
Исходя из собственных предположений о том как это реализовать, попробовал следующий код:
var cp = require('child_process');
var fs = require('fs');
var imagesArray = [/*Массив Buffer с бинарными данными*/];
var convert = cp.spawn('gm', ['convert', 'jpg:-', 'test.pdf']);
res.forEach(function (imgBuffer) {
convert.stdin.write(imgBuffer);
});
convert.stdin.end();
Не полетело :( Результат - pdf файл, содержащий исключительно первое из исходных изображений.
Пробовал и так:
var imagesArray = [/*Массив Buffer с бинарными данными*/];
var oneBigBuffer = Buffer.concat(imagesArray);
var convert = cp.spawn('gm', ['convert', 'jpg:-', 'test.pdf']);
convert.stdin.end(oneBigBuffer);
Результат тот же.
Буду премного благодарен за наводки в сторону мест копания