Я работаю над Lambda-приложением AWS, которому нужно взять файл TIFF и преобразовать его в PDF.Я широко использую ImageMagick, поэтому проще всего было: convert input.tif output.pdf
.Это прекрасно работает в моей среде Mac, но не позволяет преобразовать настоящий PDF в среду Lambda.
Сборка ImageMagick на Lambda, похоже, не поддерживает PDF-файлы.Если я запускаю convert -list format
в среде Lambda, там нет записи для PDF.Вот моя тестовая лямбда-функция:
const im = require('imagemagick');
const fs = require('fs');
exports.handler = (event, context, callback) => {
var inputFileName = 'input.tif';
var imagesPath = 'assets/images';
var outputFile = '/tmp/output.pdf';
var args = [
imagesPath+'/'+inputFileName,
'-format',
'pdf',
outputFile
];
im.convert(args,
function(err, stdout, stderr){
if (err) throw err;
console.log('stdout:', stdout);
var imageRef = fs.readFileSync(outputFile);
callback(null, {
statusCode: 200,
headers: {
'Content-Type': 'application/pdf',
'Content-Disposition': 'attachment; filename=output.pdf'
},
body: imageRef.toString('base64'),
isBase64Encoded: true
});
});
}
Когда я запускаю identify output.pdf
(то есть загруженный файл), файл сообщается как файл TIFF:
/Users/myuser/Downloads/output.pdf TIFF 517x243 517x243+0+0 8-bit CMYK 1.1314MiB 0.000u 0:00.009
Так что ImageMagick, кажется,просто передавайте его в виде файла TIFF.
Я пробовал использовать tiff2pdf - который устанавливается локально;не уверен насчет лямбды - но это даже не работает на моем Mac.Я получаю сообщение об ошибке:
tiff2pdf: No support for /path/to/input.tif with 5 samples per pixel.