2012-02-07 15 views
8

मैं पीडीएफ में क्रिस्टल रिपोर्ट की एक रिपोर्ट उत्पन्न करने के लिए एक कोड था ... लेकिन यह भी उपयोगकर्ता खोज किया था की एक ही पेज में खुलता है और बटन में क्लिक ... एक नए टैब में पीडीएफ को खोलने के लिए किसी भी तरीके हैं या पेज?क्रिस्टल की रिपोर्ट जेनरेट करें ... कैसे नए टैब या पेज में खुला?

मेरे कोड है:

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

मदद के लिए धन्यवाद!

उत्तर

6

अपनी सबसे सरल व्याख्या में, एक नई विंडो या टैब खोलने के लिए, पृष्ठ पर हाइपरलिंक target विशेषता "_blank" पर सेट होनी चाहिए।

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

या आप कुछ जावास्क्रिप्ट बना सकते हैं जो इसके बजाय एक नई विंडो खोलता है। सुनिश्चित करें कि आप पेज पर कहीं जावास्क्रिप्ट फ़ंक्शन को कॉल करते हैं।

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

या इस कोड वेब ब्राउज़र है कि फाइल एक डाउनलोड (बजाय ब्राउज़र विंडो के अंदर देखने के लिए एक पेज है) को सूचित करेंगे। मुझे लगता है कि यह सबसे अच्छा तरीका है क्योंकि उपयोगकर्ता को पीडीएफ खोलने या सहेजने का विकल्प मिलता है। तो यह वह नहीं करता जो आप पूछ रहे हैं, लेकिन आपको लगता है कि यह बेहतर है।

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

बस इस कोड को बटन ::: OnClientClick = "target = '_blank' पर लिखें;"