Я пытаюсь сгенерировать pdf-файл, используя jsPdf, а затем отправить его на сервер (ajax и asp. net core), преобразовав сгенерированный pdf-файл в BLOB-файл и загрузить его на сервер. но это не работает для меня, и я получаю NULL STRING DATA
ошибку.
Вот мой js:
function onClick() {
html2canvas(document.getElementById('content'), {
onrendered: function (canvas) {
debugger;
var doc = new jsPDF("p", "pt", "letter");
var width = doc.internal.pageSize.getWidth();
var height = doc.internal.pageSize.getHeight();
var img = canvas.toDataURL("image/png", 1.0);
doc.addImage(img, 'JPEG', 0, 0, width, height);
// converting pdf to blob
var blob = doc.output("blob");
//posting formdata
var fileData = new FormData();
fileData.append("PDF", blob);
// posting file to server
$.ajax({
url: '/invoiceGenrate/GeneratePDFAndSaveToServer',
type: 'POST',
data: fileData,
async: false,
cache: false,
processData: false,
contentType: false,
success: function (data) {
console.log(data)
},
error: function (data) {
console.log(data)
}
});
}
});
};
Код серверной стороны:
public ActionResult GeneratePDFAndSaveToServer(string data)
{
// create directiry
var dir = System.IO.Path.Combine(hostingEnvironment.ContentRootPath, "GenratedPDF");
//converting string to pdf binary
var pdfBinary = Convert.FromBase64String(data);
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);
var fileName = dir + "\\PDFnMail-" + DateTime.Now.ToString("yyyyMMdd-HHMMss") + ".pdf";
using(var fs = new FileStream(fileName, FileMode.Create))
{
using(var writer = new BinaryWriter(fs))
{
writer.Write(pdfBinary, 0, pdfBinary.Length);
writer.Close();
}
}
return null;
}