我进行了微服务,将html模板转换为pdf。我为此使用Puppeteer。创建pdf后,我将其作为回复fs.createReadStream(path).pipe(res);
但是,当我在应用程序中写入文件时,我的pdf保持白色... 进入微服务,pdf具有可见的模板。 the pdf file with template
我已经尝试过了
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}`);
}
});