2012-02-07 38 views
8

Tôi đã tạo mã để tạo báo cáo Crystal Reports trong PDF ... Nhưng nó mở trong cùng một trang của người dùng đã thực hiện tìm kiếm và nhấp vào nút ... Có bất kỳ cách nào để mở tệp PDF trong tab mới hoặc trang?Tạo báo cáo của Crystal trong PDF ... Cách mở trong tab hoặc trang mới?

Mã của tôi là:

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(); 
} 

Thanks for the help!

Trả lời

6

Trong cách giải thích đơn giản nhất, để mở cửa sổ hoặc tab mới, siêu liên kết đến trang phải có thuộc tính target được đặt thành "_blank".

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

Hoặc bạn có thể tạo một số Javascript mở cửa sổ mới thay thế. Đảm bảo bạn gọi hàm Javascript ở đâu đó trên trang.

<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> 

Hoặc mã này sẽ thông báo cho trình duyệt mà tệp tải xuống (chứ không phải trang để xem bên trong cửa sổ trình duyệt). Tôi nghĩ đây là phương pháp tốt nhất vì người dùng nhận được lựa chọn Mở hoặc Lưu PDF. Vì vậy, điều này không làm những gì bạn đang yêu cầu, nhưng bạn có thể nghĩ rằng nó tốt hơn.

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(); 
} 
1

Chỉ cần viết mã này trên nút ::: OnClientClick = "target = '_blank';"

Các vấn đề liên quan