Я сделал микросервис для преобразования HTML-шаблона в PDF. Я использую Кукольника для этого. Когда pdf создан, я отправляю его в ответ fs.createReadStream(path).pipe(res);
Но, когда я пишу файл в приложении, мой PDF остается белым ...
В микросервисе PDF-файл имеет видимый шаблон.
файл pdf с шаблоном
Я попробую это,
fs.writeFile(tmpFileName, res.body, {encoding: null}, err => {
if(err) throw new Error("Error while writing the pdf file");
)};
или это
const pdf = fs.createWriteStream(tmpFileName);
pdf.on('error', err => {
console.log(err);
});
pdf.write(res.body);
pdf.end();
Думаю, я не использую хороший метод, понимаете?
РЕДАКТИРОВАТЬ:
Проблема была в кодировке запроса. Должно быть установлено значение null для перезаписи файла после ответа.
request.post({
url: `${config.url_htmltopdf}htmlToPdf`,
body: fileToTransform,
json: true,
encoding: null
}, (err, res) => {
if (!err && res.statusCode === 200 && res.headers['content-type'] === 'application/pdf') {
fs.writeFile(tmpFileName, res.body, {encoding: null}, err => {
if(err) throw new Error("Error while writing the pdf file");
console.log('pdf generated ' + tmpFileName);
resolve ({fileId, tmpFileName});
});
} else {
throw new Error(`Request Error => err: ${err}, resCode: ${res.statusCode}, resHeaders: ${res.headers}`);
}
});