0
我在.NET 2.0 asp.net网站中使用水晶报表来创建报表中的PDF。然后我想把这个报告传输到浏览器,我已经知道该怎么做。我不知道该怎么做的是定位将保存PDF的对象标签。有人知道如何使用JavaScript或其他方式在HTML中执行此操作吗?HTML页面中带有PDF流的目标对象标签
在此先感谢您提供的任何帮助。
我在.NET 2.0 asp.net网站中使用水晶报表来创建报表中的PDF。然后我想把这个报告传输到浏览器,我已经知道该怎么做。我不知道该怎么做的是定位将保存PDF的对象标签。有人知道如何使用JavaScript或其他方式在HTML中执行此操作吗?HTML页面中带有PDF流的目标对象标签
在此先感谢您提供的任何帮助。
我想回来后,找出我必须做的事情后回答。我不得不创建一个单独的aspx页面并将其称为PDFView.aspx。然后我添加的代码到pageLoad的事件:
if (!IsPostBack)
{
ReportDocument rpt;
rpt = (ReportDocument)Session["CrystalReport"];
System.IO.Stream myStream;
CrystalDecisions.Shared.ExportOptions myExportOptions;
myExportOptions = myReport.ExportOptions;
myExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;
myExportOptions.FormatOptions = new CrystalDecisions.Shared.PdfRtfWordFormatOptions();
CrystalDecisions.Shared.ExportRequestContext myExportRequestContext = new CrystalDecisions.Shared.ExportRequestContext();
myExportRequestContext.ExportInfo = myExportOptions;
//SetReportParameter("pPrinterFriendly", true, (ReportClass)myReport);
System.Web.HttpContext.Current.Response.ClearContent();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.ContentType = "application/pdf";
myStream = myReport.FormatEngine.ExportToStream(myExportRequestContext);
Byte[] myBuffer = new Byte[myStream.Length];
myStream.Read(myBuffer, 0, (int)myStream.Length);
System.Web.HttpContext.Current.Response.BinaryWrite(myBuffer);
System.Web.HttpContext.Current.Response.Flush();
}
我创建的报表对象设置的所有参数和数据源在调用aspx页面和写报告到一个会话变量进行检索时,PDFView.aspx页面加载。然后,我使用上面的代码来检索,执行并将报告作为二进制流“二进制PDF”流式传输到浏览器响应流。
的PDFView.aspx页面中调用页面引用一个对象标签是这样的:
<object id="pdfObj" type="application/pdf" style="width:60%;height:95%;position:relative;top:2%;left:0%;right:10%;bottom:10%;margin:0px;padding:0px;border:0px;" data="PDFView.aspx"></object>