我想从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");
}
谢谢,请向我提供解决方案...