在网页上显示使用nodejs在python中生成的PDF



我有一个python脚本,它根据提供的信息生成PDF文件。我在nodejs中创建了一个应用程序,这样在每次POST请求时,脚本都会被执行,生成一个新的PDF文件。该文件保存在";"公共";文件夹,作为响应,请求返回此PDF文件。该文件显示在HTML页面上,在该页面上可以提供生成PDF所需的信息。

节点JS

router.post('/', (req, res) => {
var data = req.body;
console.log(data)
const python = spawn('python3', ['public/python/pdf.py', data.nSchool, data.nSubject, data.nProf, data.nQue]);
python.on('close', (code) => {
console.log(`${code}`);
var file = fs.createReadStream("./public/pdf/gab.pdf");
res.contentType('application/pdf')
file.pipe(res);
});
});

JAVASCRIPT

document.querySelector('#submit').onclick = function(){
fetch('/makepdf', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
nSchool: document.querySelector('#nSchool').value,
nSubject: document.querySelector('#nSubject').value,
nProf: document.querySelector('#nProf').value,
nQue: document.querySelector('#nQue').value
})
}).then(function(res) {
res.blob().then(function(resq){
var fileURL = URL.createObjectURL(resq)
document.querySelector('#img').src = fileURL
});
});
}

该应用程序在本地运行时运行良好,但在托管时,不会应用PDF文件。

问题出在哪里?生成文件时?(也许服务器没有正确运行python脚本(或者保存文件?(由于它是一个静态文件夹,不可能以我想象的方式解决问题?(

创建这样一个应用程序最有效的方法是什么?

抱歉英语不好,我正在用翻译。

您可以从派生进程捕获错误流,如下所示:

python.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});

这将告诉您python脚本执行失败的原因。

Btw。您应该将您的python文件从public/目录中移动,因为这会使其不必要地公开。

最新更新