【问题标题】:Generate Report of Crystal in PDF...How open in new tab or page?以 PDF 格式生成 Crystal 报告...如何在新标签页或新页面中打开?
【发布时间】:2012-02-29 03:02:20
【问题描述】:

我编写了一个代码来生成 PDF 格式的 Crystal Reports 报告...但它在用户搜索并单击按钮的同一页面中打开...有任何方法可以在新的文件中打开 PDF标签或页面?

我的代码是:

private void OpenPDF()
{
    ReportDocument Rel = new ReportDocument();
    Rel.Load(Server.MapPath("../Reports/Test.rpt"));
    BinaryReader stream = new BinaryReader(Rel.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat));
    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType = "application/pdf";
    Response.BinaryWrite(stream.ReadBytes(Convert.ToInt32(stream.BaseStream.Length)));
    Response.Flush();
    Response.Close(); 
}

感谢您的帮助!

【问题讨论】:

    标签: c# visual-studio-2010 pdf crystal-reports


    【解决方案1】:

    在最简单的解释中,要打开一个新窗口或标签,页面的超链接应该将target 属性设置为"_blank"

    <a href="GeneratePDF.aspx" target="_blank">Link to open PDF in new window</a>
    

    或者您可以创建一些 Javascript 来打开一个新窗口。确保在页面某处调用 Javascript 函数。

    <script type="text/javascript">
    function loadPDF() {
       window.open('GeneratePDF.aspx','','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,location=no,status=no');
    }
    </script>
    

    或者此代码将通知网络浏览器该文件是下载文件(而不是在浏览器窗口中查看的页面)。我认为这是最好的方法,因为用户可以选择打开或保存 PDF。所以这并不能满足您的要求,但您可能认为它更好。

    private void OpenPDF(string downloadAsFilename)
    {
        ReportDocument Rel = new ReportDocument();
        Rel.Load(Server.MapPath("../Reports/Test.rpt"));
        BinaryReader stream = new BinaryReader(Rel.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat));
        Response.ClearContent();
        Response.ClearHeaders();
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment; filename=" + downloadAsFilename);
        Response.AddHeader("content-length", stream.BaseStream.Length.ToString());
        Response.BinaryWrite(stream.ReadBytes(Convert.ToInt32(stream.BaseStream.Length)));
        Response.Flush();
        Response.Close(); 
    }
    

    【讨论】:

      【解决方案2】:

      只需在按钮上编写此代码 ::: OnClientClick="target = '_blank';"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-28
        • 2019-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-21
        • 2020-12-15
        • 1970-01-01
        相关资源
        最近更新 更多