我找到了一些关于使用控制器从EvoPDF创建PDF的答案,但似乎没有人通过jQuery AJAX处理控制器。
我有一个简单的jQuery函数,可以像我的应用程序中的许多其他函数一样将数据发送到控制器:
$.ajax({
url: "/AnnualFees/showStatement",
cache: false,
data: {
authKey: memberData.authKey,
entityId: memberData.entityId,
barNumber: memberData.barNumber,
statementHTML: encodeURIComponent($("#statementBody").html())
},
method: "POST",
success: function (data) {
},
});
我按照所有样本并拥有此代码。我可以更改它以保存PDF并确认正在生成PDF。
public ActionResult getStatementPDF(string statementHTML)
{
//initialize the PdfConvert object
PdfConverter pdfConverter = new PdfConverter();
// set the license key - required
pdfConverter.LicenseKey = "uzUmNCcnNCYsIjQgOiQ0JyU6JSY6LS0tLQ==";
StringBuilder PDFBody = new StringBuilder();
PDFBody.Append("<!DOCTYPE html>");
PDFBody.Append("<html lang=\"en\">");
PDFBody.Append("<head>");
PDFBody.Append(" <meta charset=\"utf - 8\">");
PDFBody.Append(" <title>Statement</title>");
PDFBody.Append("</head>");
PDFBody.Append("");
PDFBody.Append("<body>");
PDFBody.Append("Hello world.");
PDFBody.Append("</body>");
PDFBody.Append("</html>");
byte[] outPdfBuffer = pdfConverter.GetPdfBytesFromHtmlString(PDFBody.ToString());
// Send the PDF file to browser
FileResult fileResult = new FileContentResult(outPdfBuffer, "application/pdf");
fileResult.FileDownloadName = "Statement.pdf";
return fileResult;
}
我可以确认它们没有错误,并且使用正确的application / pdf类型返回200成功,并且大小与磁盘大小相同。但是,没有PDF出现,浏览器中没有任何内容。
答案 0 :(得分:-2)
您需要在ajax调用中处理onSuccess数据,您可以执行类似这样的操作来打开文件,如果要保存文件,可能需要使用FileSaverJS(https://github.com/eligrey/FileSaver.js/)
success: function (data) {
var file = new Blob([data], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
}