客户端使用Response.BinaryWriteASP.NETc#下载pdf文件
Client download pdf file using Response.BinaryWrite ASP.NET c#
我正在尝试添加下载 pdf 文件的功能。我正在使用 ironpdf 生成 pdf 文件,我希望用户点击并下载它。
这是我的经纪人。
try
{
// Render any HTML fragment or document to HTML
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
var data = PDF.MetaData;
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.Buffer = true;
context.Response.ContentType = "application/pdf";
context.Response.AddHeader("content-disposition", "attachment;filename=Cotacao.pdf");
context.Response.BinaryWrite(PDF.BinaryData);
context.Response.Flush();
}
catch (Exception e)
{
}
finally
{
context.ApplicationInstance.CompleteRequest();
}
这是我的ajax请求
function GeneratePDF() {
return $.ajax({
type: "POST",
url: "../Handlers/GeneratePDF.ashx",
success: PDFSuccess,
error: PDFError
});
我可以在浏览器中看到输出流响应,但没有下载对话框。我做错了什么?
提前致谢。
我遇到了同样的问题,并且能够让它与前端的 FileDownload 一起工作:
const FileDownload = require('js-file-download');
postHtmlString(data).then(response => {
console.log(response)
commit('pdfDownloading', false)
FileDownload(response.data, 'example.pdf');
})...
还有我的控制器returns:
return File(pdf.BinaryData, "application/pdf");
这里是 js 文件下载:https://www.npmjs.com/package/js-file-download
最后,也许最重要的是,您需要在前端的 api 请求中设置响应类型:
responseType: 'arraybuffer'
我正在尝试添加下载 pdf 文件的功能。我正在使用 ironpdf 生成 pdf 文件,我希望用户点击并下载它。
这是我的经纪人。
try
{
// Render any HTML fragment or document to HTML
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
var data = PDF.MetaData;
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.Buffer = true;
context.Response.ContentType = "application/pdf";
context.Response.AddHeader("content-disposition", "attachment;filename=Cotacao.pdf");
context.Response.BinaryWrite(PDF.BinaryData);
context.Response.Flush();
}
catch (Exception e)
{
}
finally
{
context.ApplicationInstance.CompleteRequest();
}
这是我的ajax请求
function GeneratePDF() {
return $.ajax({
type: "POST",
url: "../Handlers/GeneratePDF.ashx",
success: PDFSuccess,
error: PDFError
});
我可以在浏览器中看到输出流响应,但没有下载对话框。我做错了什么?
提前致谢。
我遇到了同样的问题,并且能够让它与前端的 FileDownload 一起工作:
const FileDownload = require('js-file-download');
postHtmlString(data).then(response => {
console.log(response)
commit('pdfDownloading', false)
FileDownload(response.data, 'example.pdf');
})...
还有我的控制器returns:
return File(pdf.BinaryData, "application/pdf");
这里是 js 文件下载:https://www.npmjs.com/package/js-file-download
最后,也许最重要的是,您需要在前端的 api 请求中设置响应类型:
responseType: 'arraybuffer'