如何将生成的pdf保存在项目文件夹Node Jasper Reports中?

时间:2019-01-30 04:05:30

标签: node.js jasper-reports

我正在使用一个名为Node Jasper的库。 Pdf也通过动态传递的参数生成。我想将该文件保存在项目文件夹中。有人可以帮助我实现这一目标吗?以下是片段

exports.jasperdemo = (req, res) => {
    console.log(req.body)
    var report = {
        report: 'hw',
        data: {
            parameter1: req.body.parameter1,
            parameter2: req.body.parameter2
        },
    }
    var pdf = jasper.pdf(report);
    res.set({
        'Content-type': 'application/pdf',
        'Content-Length': pdf.length
    });
    fs.writeFile("Test.pdf",res.body);
    res.send(pdf)
}

2 个答案:

答案 0 :(得分:1)

您可以在fs.writeFile()函数中将目录添加到文件名之前:

exports.jasperdemo = (req, res) => {
        console.log(req.body)
        var report = {
            report: 'hw',
            data: {
                parameter1: req.body.parameter1,
                parameter2: req.body.parameter2
            },
        }
        var pdf = jasper.pdf(report);
        res.set({
            'Content-type': 'application/pdf',
            'Content-Length': pdf.length
        });
        // Added your change here
        fs.writeFile("./your/directory/Test.pdf",res.body);
        res.send(pdf)
    }

答案 1 :(得分:1)

使用new Buffer(pdf,"binary")创建一个二进制数据缓冲区,然后将其传递给res.body而不是res.body来查找随附的代码

 exports.jasperdemo = (req, res, next) => {

        var report = {
            report: 'hw',
            data: {
                 parameter1: req.body.parameter1,
                 parameter2: req.body.parameter2
            }
        }

        var pdf = jasper.pdf(report);

        res.set({
            'Content-type': 'application/pdf',
            'Content-Length': pdf.length
        });

            fs.writeFile("./reports/Test.pdf",new Buffer(pdf, 'binary'), ()=>{
            console.log('successful');
        });
        res.send(pdf)

    }