c# - 将服务器端生成的 PDF 发送到浏览器

标签 c# javascript asp.net

我有一个在服务器端调用静态 WebMethod 的 AJAX 调用。 服务器端方法返回一个包含 PDF 文件字节流的 MemoryStream。 然后,我如何在 AJAX 调用的成功方法中在客户端使用此 PDF 字节流,以某种方式触发 PDF 文件下载。 我也不会做什么页面的完整回发。

我将其用作引用:http://forums.asp.net/t/1377154.aspx?Download+from+Javascript 但我想有一个完整的例子来实现这一点。

function generatePDF(param1, param2, param3) {
    $.ajax({
        type: 'POST',
        url: 'Page.aspx/GeneratePDF',
        data: '{ "param1" : "' + param1+ '", "param2" : "' + param2+ '", "param3" : "' + param3+ '" }',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (pdf) {

            //from here somehow, download the generated PDF file
        }
    });
}

最佳答案

我个人没有这样做过,但我首先要尝试的是:

在服务器端动态构建合适的HTML文档和CSS 使用 phantomJS 呈现该文档 告诉 phantomJS 将该文档转换为 PDF,保存在临时文件中 通过将临时 PDF 文件写入响应正文,将 PDF 作为 HTTP 响应发回 删除临时文件 如果您在内容类型、内容处置等方面苦苦挣扎,如果磁盘上有一个有效的 pdf 文件并且只需将该数据写入 HTTP 响应,您就不必担心这些。使用正确的标题,您应该能够要求浏览器显示 PDF 或将其视为要保存为下载的文件。

关于c# - 将服务器端生成的 PDF 发送到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18913987/

相关文章:

c# - 什么是正确的客体关系? (C#)

c# - 如何通过 .NET 执行 Minitab 命令?

javascript - 平滑滚动不适用于 p 标签内的标签

javascript - NodeList 原型(prototype)中的对象

c# - 尝试在 Repeater 中使用 String.Format 但出现语法错误

c# - 使用 ASP.NET 按钮显示的 jQuery UI 对话框

c# - 如何获取有关服务结构实例的 cpu、内存和磁盘信息(可能使用 REST api)?

c# - GetWindowText() 抛出错误且未被 try/catch 捕获

javascript - 使用 javascript 进行图像转换

asp.net - 在 ASP.NET 中制作用户控件的最佳实践?