【问题标题】:MVC & PDFSharp - generated pdf won't downloadMVC & PDFSharp - 生成的 pdf 不会下载
【发布时间】:2015-03-25 13:57:56
【问题描述】:

我有生成 pdf 的 pdfExport 类。在这个类中我有一个方法

    public MemoryStream returnPDF()
    {
        using (MemoryStream stream = new MemoryStream())
        {
            pdfRenderer.PdfDocument.Save(stream, false);
            return stream;
        }

    }

我的控制器如下所示

     [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
    public ActionResult Contingency_Report(List<int> ids)
    {
        pdfExport pdf = new pdfExport(ids);

        MemoryStream stream = new MemoryStream();

        stream = pdf.returnPDF();
        return File(stream.ToArray(), "application/pdf", "contingency.pdf");

    }

正如我在 Chrome 中看到的(按下 F12 键),响应返回 pdf(响应选项卡),但该文件不可下载。在我在“响应”选项卡中看到结果之前,什么都没有发生。如何使其可供下载?我希望浏览器询问保存文件的位置。

【问题讨论】:

    标签: c# asp.net-mvc pdf download pdfsharp


    【解决方案1】:

    我解决了我的问题。如果有人需要帮助,我已经做了什么

    查看:

        $(function () {
        $("#btnCont").click(function () {
            var idsToSend = [];
    
            var grid = $("#grid_Edit").data("kendoGrid");
            var ds = grid.dataSource.view();
    
            for (var i = 0; i < ds.length; i++) {
                var row = grid.table.find("tr[data-uid='" + ds[i].uid + "']");
                var checkbox = $(row).find(".checkbox");
    
                if (checkbox.is(":checked")) {
                    idsToSend.push(ds[i].ID);
                }
            }
    
            //      alert(idsToSend);
    
            //  $.post("/Contigency/Contingency_Report", { ids: idsToSend});
    
            var url = "";
            url = server;
    
            var getUrl = '@Url.Action("Download_Report", "Contigency")';
    
            $.ajax({
                url: url + "/Contigency/Contingency_Report",
                type: 'post',
                contentType: 'application/json',
                data: JSON.stringify({
                    ids: idsToSend 
                }),
                success: function (d) {
                    if (d.success) {
                              window.location = getUrl + "?fName="+ d.fName;
                                  }
                 },
                 error: function () {
    
                 }
    
            })
        })
    }
    
     );
    

    以及发布和获取方法

                public ActionResult Contingency_Report(List<int> ids)
        {
            MemoryStream workStream = new MemoryStream();
    
            pdfExport pdf = new pdfExport(ids);
    
            workStream = pdf.returnPDF();
    
            workStream.Position = 0;
    
            var fName = string.Format("Contingency-{0}", DateTime.Now.ToString("s"));
            Session[fName] = workStream;
    
            return Json(new { success = true, fName }, JsonRequestBehavior.AllowGet);
        }
    
        public ActionResult Download_Report(string fName)
        {
            var cd = new System.Net.Mime.ContentDisposition
            {
                FileName = fName+".pdf",
                Inline = false,
            };
    
            var stream = Session[fName] as MemoryStream;
            if (stream == null)
                return new EmptyResult();
    
            Session[fName] = null;
    
            Response.AppendHeader("Content-Disposition", cd.ToString());
    
            return File(stream, System.Net.Mime.MediaTypeNames.Application.Pdf);
        }
    

    就是这样!

    【讨论】:

      猜你喜欢
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 2016-10-23
      • 2014-09-08
      • 1970-01-01
      • 2016-01-13
      • 2013-07-04
      相关资源
      最近更新 更多