выгрузить сгенерированный pdf-файл на сервер, используя jsPdf (ajax и asp. net core), конвертировав pdf в blob-файл, не работает - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь сгенерировать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...