为什么在编写PDF时我的pdf会保持白色?

时间:2019-05-23 13:41:31

标签: node.js pdf fs writefile nodejs-stream

我进行了微服务,将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}`);
          }
        });

0 个答案:

没有答案