NodeJS 从nestjs生成的pdf正确响应

h9vpoimq  于 2023-06-22  发布在  Node.js
关注(0)|答案(1)|浏览(191)

我正在使用jsPDF库生成PDF。我的控制器看起来像这样:

@Post('/')
  async generatePdf(
    @Res() response: Response,
  ) {
    const doc = new jsPDF();

    doc.text('PDF with image', 10, 10);

    const imageData = readFileSync('src/pdf/template_1.png');
    doc.addImage(imageData, 'PNG', 0, 0, 100, 100);
    
    const pdf = doc.output();

    writeFileSync('/tmp/document.pdf', data, 'binary');

    const stream = new Readable();

    stream.push(pdf);
    stream.push(null);

    response.set({
      'Content-Type': 'application/pdf',
    });

    stream.pipe(response);
  }

我可以保存一个PDF,但它没有图像。但是保存到/tmp的pdf有一个图像。
如何正确地在nestjs控制器中创建响应?

tag5nh1u

tag5nh1u1#

您可以开始处理控制器:

@Get('generate')
async generatePdf() {
  const generatePdf = await this.pdfServicesRepo.generatePdf(header);

  return {
    generatePdf,
    mensaje: 'Success',
  };
}

然后为逻辑创建服务

async generatePdf() {
  const doc = new jsPDF();

  const imgData = fs.readFileSync(
    join(__dirname, 'path'),
  );

doc.addImage(imgData, 'PNG', 15, 10, 30, 30);

const fileName = 'file.pdf';
  const pathFile = join(
    __dirname,
    'path',
    pathFile,
  );
  fs.writeFileSync(pathFile, doc.output(), 'binary');
}

相关问题