У меня есть интерфейс AngularJs и серверная часть NodeJS. Я пытаюсь создать PDF-файл на NodeJS на основе некоторых параметров из AngularJS и вернуть PDF-файл в ответ.
Код, который я использую, работает нормально, когда я делаю запрос GET из AngularJS, но возвращает пустой PDF-файл, когда я делаю запрос POST. Мне нужно сделать запрос POST, так как я должен отправить некоторые конкретные данные.
Сначала я сохраняю файл на диске, а затем отправляю его во внешний интерфейс, чтобы видеть, что PDF-файл создается правильно. Он либо неправильно отправляется, либо правильно читается на FrontEnd.
Ниже приведен мой код AngularJS.
var url = {{My Node Server URL}};
(Note: Works when I make a Get request, without sending post params)
var $promise = $http.post(encodeURI(url), {
responseType: 'arraybuffer',
competitors: competitors,
channels: channels
});
$promise.then(
function success(response) {
var blob = new Blob([response.data], { type : 'application/pdf' });
var pdfLink = (window.URL || window.webkitURL).createObjectURL( blob );
window.open(
pdfLink,
'_blank' // <- This is what makes it open in a new window.
);
cb(pdfLink);
}, function error(response) {
--Error Handling--
}
)
Ниже приведен мой код NodeJS.
wkhtmltopdf(
html,
{
output: pdfName
},
function (code, signal) {
fs.readFile(pdfName, function (err, data) {
if (err) {res.writeHead(400); res.end("" + err); return;}
res.writeHead(
200,
{
"content-type" : "application/pdf",
"Content-Disposition": "attachment; filename=Best.pdf "
}
);
res.end(data);
});
}
);
Я заглянул во многие места и перепробовал почти все, но ничего не работает. Любой намек/помощь/предложение будут оценены. Пожалуйста, спросите, нужно ли мне предоставить дополнительную информацию или детали. ТИА