从html生成pdf并通过ajax在浏览器中显示该文件

时间:2019-07-11 12:51:42

标签: c# jquery ajax asp.net-mvc asp.net-ajax

我想从html生成pdf文件,该文件将在浏览器中下载。文件已成功生成,但我不知道如何在浏览器中通过ajax下载显示该文件,我也尝试使用ajax发布该文件,但这没有用。它可以与类似window.location = "/Proposal/DownloadProposal?companyName=" + companyText + "&message=" + message;的get方法一起使用 但是我的消息长度超过2000个字符的长度,并且呼叫无法发送到服务器。 我的代码如下: 这是我的ajax电话。

$("#btnDownloadProposal").on("click", function () {
        var message = $("#rtxtContent").data("kendoEditor").value();

        var download = true;
        var companyText = $("#ddlCompany").data("kendoComboBox").text();

        if (download) {
            showLoading();
            message = encodeURIComponent(message);
            //window.location = "/Proposal/DownloadProposal?companyName=" + companyText + "&message=" + message;
            //hideLoading();

            try {
                $.ajax({
                    url: '@Url.Action("DownloadProposal", "Proposal")',
                    data: { companyName: companyText, message: message },
                    dataType: "json",
                    //contentType: "application/json; charset=utf-8",
                    type: "POST",
                    error: function (data) {
                        hideLoading();
                    },
                    success: function (returnValue) {
                        debugger;
                        //window.location = '/Proposal/DownloadProposal?file=' + returnValue;
                    }
                });
            }
            catch (e) {
                hideLoading();
                console.log(e.message);
            }
        }

    });

这是服务器端c#代码。

[ValidateInput(false)]
        [HttpPost]
        public ActionResult DownloadProposal(string companyName, string message)
        {

            Byte[] result = null;
            var memStream = new MemoryStream();
            var pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf(message, PdfSharp.PageSize.A4);
            pdf.Save(memStream);
            result = memStream.ToArray();

            var contentType = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Application.Pdf);

            return File(result, contentType.ToString(), "Proposal.pdf");
        }

谢谢,请向我提供解决方案...

0 个答案:

没有答案