C# 尝试在ASP.NET MVC中显示使用iTextSharp生成的PDF文件
我有一个ajax方法C# 尝试在ASP.NET MVC中显示使用iTextSharp生成的PDF文件,c#,ajax,asp.net-mvc,pdf,itextsharp,C#,Ajax,Asp.net Mvc,Pdf,Itextsharp,我有一个ajax方法 function downloadPDF() { var elem = $('#actionPlanDetails'); elem.find("button").hide(); elem.find("iframe").hide(); elem.find("input[type='button']").hide(); html2canvas(elem[0], { onr
function downloadPDF() {
var elem = $('#actionPlanDetails');
elem.find("button").hide();
elem.find("iframe").hide();
elem.find("input[type='button']").hide();
html2canvas(elem[0], {
onrendered: function (canvas) {
var result = canvas.toDataURL();
var base64 = result.split(',')[1];
elem.find("button").show();
elem.find("iframe").show();
elem.find("input[type='button']").show();
$.ajax({
beforeSend: function () {
$.blockUI({ message: $('#waitMessage') });
},
url: "/ActionPlan/UploadPDF",
type: 'POST',
data: { pdfStr: base64 },
dataType: 'image/jpeg',
success: function (result) {
console.log('PDF');
},
complete: function () {
$.unblockUI();
}
});
}
});
}
…它使用html2canvas.js获取屏幕图像并将字节发送到MVC操作方法
[HttpPost]
public ActionResult UploadPDF(string pdfStr)
{
byte[] pdf = Convert.FromBase64String(pdfStr);
int fileLength = pdf.Length;
Document doc = new Document();
string pdfpath = Server.MapPath("../Content/pdfs");
try
{
PdfWriter.GetInstance(doc, new FileStream(pdfpath + "/Plan.pdf", FileMode.Create));
doc.Open();
Image planImg = Image.GetInstance(pdf);
doc.Add(planImg);
}
catch (Exception ex)
{
}
finally
{
//doc.Close();
}
return File("~/Content/pdfs/Plan.pdf", "application/pdf");
}
…它将传递的字符串转换为字节数组,并使用iTextSharp创建文档,将其附加到PDF文档并将其写入内容子目录
问题在于,在编写PDF文件后,我还希望它在操作返回时弹出窗口,就像我经常看到的Controller.file()方法那样。但什么也没发生。PDF会很好地保存在内容文件夹中,但在操作返回时不会弹出任何内容
查看fiddler中的was响应,我只看到了一堆字节,而不是PDF,因此我想我可能遗漏了一些配置/元数据,但我在文档中找不到关于这种情况的更多信息。您尝试过这个答案的建议吗?事实上非常像那样,是的。我将在稍后发布我提出的解决方案