如何在response.flush()之后打印页面?

时间:2014-06-25 19:13:17

标签: c# javascript jquery asp.net printing

我的ReportViewer页面上有一个asp.net。客户需要下一个功能: 单击打印按钮时自定义打印>报告在浏览器的新标签/窗口中以pdf格式打开,并自动弹出打印对话框。

我所做的是从报表查看器中保存呈现的pdf是会话并在浏览器中打开新选项卡: 警告[]警告;

    string[] streamids;
    string mimeType;
    string encoding;
    string extension;
    byte[] myBytes;
    string reportName = hfReportName.Value;

    myBytes = rvReport.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);

    Session["myBytes"] = myBytes;
    Session["mimeType"] = mimeType;
    Session["fileName"] = reportName + "_" + ddlOffGroup.SelectedItem + "." + extension;

    Response.Buffer = true;
    Response.Clear();
    Response.Write("<script>");
    Response.Write(String.Format("window.open('{0}')", ResolveUrl("PrintPage.aspx")));
    Response.Write("</script>");

然后在PrintPage.aspx我有这个:

protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["myBytes"] == null || Session["mimeType"] == null || Session["fileName"] == null)
                Response.Redirect("ErrorPage.aspx?errStr=No print content found. Sorry");
            else
            {
                Response.Buffer = true;
                Response.Clear();
                Response.ContentType = Session["mimeType"].ToString();
                Response.AddHeader("content-disposition", "inline; filename=" + Session["fileName"].ToString());
                Response.BinaryWrite((byte[])Session["myBytes"]);
                Response.Flush();
                //Response.End();
            }
        }

基本上,报告打开正常,但我无法弄清楚如何显示打印对话框(与Ctrl + P功能相同)。我试图在页面上添加这个:

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () { 
            window.print();
        });
    </script>

但是加载页面时没有任何反应。有什么建议吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

看起来像是javascript错误。你确定浏览器中没有javascript错误吗? JQuery .js文件是否在指定位置?

可能javascript不起作用,因为页面的内容类型不是text / html。尝试删除

Response.ContentType = Session["mimeType"].ToString();