在创建pdf时,文件名不是动态的。只有静态文件名即将来临

时间:2015-05-29 05:22:19

标签: asp.net pdf response

我想根据项目名称给出一个文件名。以下这一行是静态命名pdf

Response.AddHeader("content-disposition", "attachment;filename=WeeklyReport.pdf");

输出文件名 - weeklyreport.pdf

虽然给动态名称不接受.pdf

 Response.AddHeader("content-disposition", "attachment;filename=" + Projname + ".pdf");

输出TestingProject 这里缺少.pdf,所以默认情况下不能以pdf格式打开

1 个答案:

答案 0 :(得分:1)

要制作pdf文件并动态命名,你可以像这样使用

Response.AddHeader("content-disposition",  Response.Clear();
           Response.AddHeader("content-disposition", string.Format("attachment;filename=\"{0}.pdf\"", Projname));
           Response.Cache.SetCacheability(HttpCacheability.NoCache);
            System.IO.StringWriter stringWrite = new System.IO.StringWriter();

            System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
            design.RenderControl(htmlWrite);
            string myText = stringWrite.ToString().Replace("&", "&");
            StringReader sr = new StringReader(myText.ToString());
            Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
            Response.ContentType = "application/pdf";
            PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
            pdfDoc.Open();
            XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
            pdfDoc.Close();
            Response.End();
            pdfDoc.Dispose();
相关问题