我發現了一些關於使用控制器從EvoPDF創建PDF的答案,但似乎沒有處理通過jQuery AJAX調用的控制器。從控制器通過jQuery返回PDF格式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;
}
我可以證實他們是沒有錯誤和200次的成功與正確的應用程序/ PDF類型和大小差不多在磁盤上返回。然而,沒有PDF出現,沒有在瀏覽器中打開。
沒有發生是因爲回調對AJAX請求的迴應沒有任何作用。加上文件下載將無法使用ajax。您需要的是在服務器上生成並保存PDF文件,並返回指向該文件的URL,以便瀏覽器可以在回調中重定向。 – marekful
我希望不惜一切代價避免保存PDF,因爲在這個階段,PDF是最終文檔的草稿。我看到示例代碼將PDF流式傳輸到瀏覽器,但它不起作用。這是不可能的嗎? –