6

I coded a NodeJS class which is supposed to create a PDF file out of a html string. The class is deployed on AWS Lambda. It is based on html-pdf (https://www.npmjs.com/package/html-pdf).

const {readFileSync} = require('fs');
const pdf = require('html-pdf');

process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT'];

const options = { format: 'Letter' };

const createPDF = async (fileName, data) => {

    let text = readFileSync('./templates/' + fileName + '.html','utf8');

    data.forEach(element => {
        text = text.replace("{{{" + element[0] + "}}}",element[1]);
    });

    console.log(text);

    return new Promise(function(resolve, reject) {
        pdf.create(text, options).toBuffer(function (err, buffer) {
            if (!err)
                resolve(buffer);
            else
                console.log(buffer)
        });
    });
};

module.exports = {
    createPDF
};

But once the method createPDF is called, the following error occurs:

ERROR   Error: write EPIPE
    at afterWriteDispatched (internal/stream_base_commons.js:154:25)
    at writeGeneric (internal/stream_base_commons.js:145:3)
    at Socket._writeGeneric (net.js:784:11)
    at Socket._write (net.js:796:8)
    at doWrite (_stream_writable.js:403:12)
    at writeOrBuffer (_stream_writable.js:387:5)
    at Socket.Writable.write (_stream_writable.js:318:11)
    at PDF.PdfExec [as exec] (/var/task/node_modules/html-pdf/lib/pdf.js:141:15)
    at PDF.PdfToBuffer [as toBuffer] (/var/task/node_modules/html-pdf/lib/pdf.js:44:8)
    at /var/task/src/helper/PDFHelper.js:19:35 {
  errno: 'EPIPE',
  code: 'EPIPE',
  syscall: 'write'
}

Does anyone know how to solve it?

Best regards Julius

0 Answers0