Тег целевого объекта с потоком PDF на странице HTML - PullRequest
0 голосов
/ 29 марта 2012

Я использую Crystal Reports на веб-сайте .NET 2.0 asp.net для создания PDF-файла из отчета. Затем я хочу передать отчет в браузер, что я уже знаю, как сделать. То, что я не знаю, как сделать, это нацелить тег объекта, который будет содержать PDF. Кто-нибудь знает, как сделать это в HTML с помощью JavaScript или любым другим способом?

Заранее благодарим за любую помощь, которая может быть оказана.

1 Ответ

1 голос
/ 21 мая 2012

Я хотел вернуться и ответить на это, узнав, что я должен был сделать.Я должен был создать отдельную страницу 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>
...