コード例 #1
0
 public void Process(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, OnDemandProcessingContext odpContext, bool generateDocumentMap, bool createSnapshot)
 {
     this.m_odpContext     = odpContext;
     this.m_report         = report;
     this.m_generateDocMap = (generateDocumentMap && this.m_report.HasDocumentMap);
     this.m_createSnapshot = createSnapshot;
     if (this.m_generateDocMap)
     {
         odpContext.HasRenderFormatDependencyInDocumentMap = false;
     }
     if (this.m_generateDocMap || this.m_createSnapshot)
     {
         foreach (AspNetCore.ReportingServices.OnDemandReportRendering.ReportSection reportSection in report.ReportSections)
         {
             this.Visit(reportSection);
         }
     }
     if (this.m_generateDocMap && this.m_docMapWriter != null)
     {
         this.m_docMapWriter.WriteEndContainer();
         this.m_docMapWriter.Close();
         this.m_docMapWriter = null;
         if (odpContext.HasRenderFormatDependencyInDocumentMap)
         {
             odpContext.OdpMetadata.ReportSnapshot.SetRenderFormatDependencyInDocumentMap(odpContext);
         }
     }
 }
コード例 #2
0
        public int ProcessBookmarkNavigationEvent(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, int totalPages, string bookmarkId, out string uniqueName)
        {
            uniqueName = null;
            if (!report.HasBookmarks)
            {
                return(0);
            }
            if (bookmarkId == null)
            {
                return(0);
            }
            int  lastPageCollected = 0;
            bool flag = false;
            int  num  = InteractivityChunks.FindBoomark(report, bookmarkId, ref uniqueName, ref lastPageCollected, ref flag);

            if (!flag && num == 0)
            {
                using (SPBProcessing sPBProcessing = new SPBProcessing(report, totalPages, true))
                {
                    sPBProcessing.CanTracePagination = true;
                    sPBProcessing.SetContext(new SPBContext(0, 0, true));
                    return(sPBProcessing.FindBookmark(bookmarkId, lastPageCollected, ref uniqueName));
                }
            }
            return(num);
        }
コード例 #3
0
        public int ProcessDocumentMapNavigationEvent(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, string documentMapId)
        {
            if (!report.HasDocumentMap)
            {
                return(0);
            }
            if (documentMapId == null)
            {
                return(0);
            }
            int  lastPageCollected = 0;
            bool flag = false;
            int  num  = InteractivityChunks.FindDocumentMapLabel(report, documentMapId, ref lastPageCollected, ref flag);

            if (!flag && num == 0)
            {
                using (SPBProcessing sPBProcessing = new SPBProcessing(report, 0, false))
                {
                    sPBProcessing.CanTracePagination = true;
                    sPBProcessing.SetContext(new SPBContext(0, 0, true));
                    return(sPBProcessing.FindDocumentMap(documentMapId, lastPageCollected));
                }
            }
            return(num);
        }
コード例 #4
0
 public ItemContext(RPLWriter rplWriter, PageContext pageContext, AspNetCore.ReportingServices.OnDemandReportRendering.Report report, AspNetCore.ReportingServices.OnDemandReportRendering.ReportSection reportSection)
 {
     this.RPLWriter     = rplWriter;
     this.PageContext   = pageContext;
     this.Report        = report;
     this.ReportSection = reportSection;
 }
コード例 #5
0
 private void Init(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, PaginationSettings pagination, CreateAndRegisterStream createAndRegisterStream, ref Hashtable renderProperties)
 {
     this.m_pageContext             = new PageContext(pagination, report.AddToCurrentPage, report.ConsumeContainerWhitespace, createAndRegisterStream);
     this.m_paginationSettings      = pagination;
     this.m_report                  = new Report(report, this.m_pageContext, pagination);
     this.m_createAndRegisterStream = createAndRegisterStream;
     if (report.SnapshotPageSizeInfo != AspNetCore.ReportingServices.OnDemandReportRendering.Report.SnapshotPageSize.Large)
     {
         this.m_createStream = false;
     }
     if (!string.IsNullOrEmpty(pagination.ReportItemPath))
     {
         this.m_pageContext.Common.IsInSelectiveRendering = true;
         this.m_selectiveRendering = new SelectiveRendering(report, this.m_pageContext, pagination);
     }
     else if (this.m_totalPages <= 0)
     {
         this.m_totalPages = 0;
         if (report.NeedsOverallTotalPages | report.NeedsPageBreakTotalPages)
         {
             this.m_pageContext.Common.PauseDiagnostics();
             this.SetContext(0, 0);
             this.m_pageContext.PropertyCacheState = PageContext.CacheState.CountPages;
             while (this.NextPage())
             {
             }
             this.m_totalPages = this.m_pageContext.PageNumber;
             this.m_pageContext.Common.UpdateTotalPagesRegionMapping();
             this.m_pageContext.Common.ResumeDiagnostics();
             this.m_pageContext.TextBoxDuplicates = null;
         }
     }
 }
コード例 #6
0
        public static DocumentMapLabels GetLabelsStream(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, int page)
        {
            int    page2 = 0;
            Stream interactivityChunck = InteractivityChunks.GetInteractivityChunck(report, "Labels", page, out page2);

            if (interactivityChunck != null)
            {
                return(new DocumentMapLabels(interactivityChunck, page2));
            }
            return(null);
        }
コード例 #7
0
        public PaginationSettings(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, NameValueCollection aDeviceInfo)
        {
            this.Init(report);
            int    columns       = default(int);
            double columnSpacing = default(double);

            this.ParseDeviceInfo(aDeviceInfo, out columns, out columnSpacing);
            this.ValidateFields(columns, columnSpacing);
            this.m_dynamicImageDpiX = this.m_dpiX;
            this.m_dynamicImageDpiY = this.m_dpiY;
        }
コード例 #8
0
        public static Bookmarks GetBookmarksStream(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, int page)
        {
            int    page2 = 0;
            Stream interactivityChunck = InteractivityChunks.GetInteractivityChunck(report, "Bookmarks", page, out page2);

            if (interactivityChunck != null)
            {
                return(new Bookmarks(interactivityChunck, page2));
            }
            return(null);
        }
コード例 #9
0
 public override void WriteCustomNonSharedItemProps(RPLElementProps nonSharedProps, PageContext pageContext)
 {
     AspNetCore.ReportingServices.OnDemandReportRendering.Report report = ((AspNetCore.ReportingServices.OnDemandReportRendering.SubReport)base.m_source).Report;
     if (report != null)
     {
         string reportLanguage = Report.GetReportLanguage(report);
         if (reportLanguage != null)
         {
             ((RPLSubReportProps)nonSharedProps).Language = reportLanguage;
         }
     }
 }
コード例 #10
0
 public override void WriteCustomNonSharedItemProps(BinaryWriter spbifWriter, PageContext pageContext)
 {
     AspNetCore.ReportingServices.OnDemandReportRendering.Report report = ((AspNetCore.ReportingServices.OnDemandReportRendering.SubReport)base.m_source).Report;
     if (report != null)
     {
         string reportLanguage = Report.GetReportLanguage(report);
         if (reportLanguage != null)
         {
             spbifWriter.Write((byte)11);
             spbifWriter.Write(reportLanguage);
         }
     }
 }
コード例 #11
0
 public int ProcessFindStringEvent(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, int totalPages, int startPage, int endPage, string findValue)
 {
     if (findValue != null && startPage > 0 && endPage > 0)
     {
         int num = 0;
         using (SPBProcessing sPBProcessing = new SPBProcessing(report, totalPages, true))
         {
             sPBProcessing.CanTracePagination = true;
             sPBProcessing.SetContext(new SPBContext(0, 0, false));
             return(sPBProcessing.FindString(startPage, endPage, findValue));
         }
     }
     return(0);
 }
コード例 #12
0
        public int ProcessUserSortEvent(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, string textbox, ref int numberOfPages, ref PaginationMode paginationMode)
        {
            if (textbox == null)
            {
                return(0);
            }
            int num = 0;

            using (SPBProcessing sPBProcessing = new SPBProcessing(report, 0, false))
            {
                sPBProcessing.CanTracePagination = true;
                sPBProcessing.SetContext(new SPBContext(0, 0, true));
                return(sPBProcessing.FindUserSort(textbox, ref numberOfPages, ref paginationMode));
            }
        }
コード例 #13
0
 private void VisitSubReport(AspNetCore.ReportingServices.OnDemandReportRendering.SubReport subreportDef)
 {
     if (subreportDef.Report != null && subreportDef.Instance != null && !subreportDef.ProcessedWithError)
     {
         AspNetCore.ReportingServices.OnDemandReportRendering.Report report = subreportDef.Report;
         if (!report.HasDocumentMap && !this.m_createSnapshot)
         {
             return;
         }
         foreach (AspNetCore.ReportingServices.OnDemandReportRendering.ReportSection reportSection in report.ReportSections)
         {
             this.Visit(reportSection.Body.ReportItemCollection);
             this.VisitStyle(reportSection.Body.Style);
         }
     }
 }
コード例 #14
0
        public string ProcessDrillthroughEvent(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, int totalPages, string drillthroughId, out NameValueCollection parameters)
        {
            parameters = null;
            if (drillthroughId == null)
            {
                return(null);
            }
            int    lastPageCollected = 0;
            string text = null;

            using (SPBProcessing sPBProcessing = new SPBProcessing(report, totalPages, true))
            {
                sPBProcessing.CanTracePagination = true;
                sPBProcessing.SetContext(new SPBContext(0, 0, true));
                return(sPBProcessing.FindDrillthrough(drillthroughId, lastPageCollected, out parameters));
            }
        }
コード例 #15
0
        private static ReportItem FindReportItem(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, IEnumerable <string> reportItemPathSteps, out AspNetCore.ReportingServices.OnDemandReportRendering.ReportSection reportSection)
        {
            reportSection = null;
            int num = reportItemPathSteps.Count();

            if (num == 0)
            {
                return(null);
            }
            bool       flag       = num > 1;
            string     text       = reportItemPathSteps.FirstOrDefault();
            ReportItem reportItem = null;

            foreach (AspNetCore.ReportingServices.OnDemandReportRendering.ReportSection reportSection2 in report.ReportSections)
            {
                foreach (ReportItem item in reportSection2.Body.ReportItemCollection)
                {
                    if (flag)
                    {
                        AspNetCore.ReportingServices.OnDemandReportRendering.SubReport subReport = item as AspNetCore.ReportingServices.OnDemandReportRendering.SubReport;
                        if (subReport != null && subReport.Report != null && string.CompareOrdinal(item.Name, text) == 0)
                        {
                            reportItem = SelectiveRendering.FindReportItem(subReport.Report, reportItemPathSteps.Skip(1), out reportSection);
                        }
                    }
                    else
                    {
                        AspNetCore.ReportingServices.OnDemandReportRendering.Rectangle rectangle = item as AspNetCore.ReportingServices.OnDemandReportRendering.Rectangle;
                        if (rectangle != null)
                        {
                            reportItem = SelectiveRendering.FindReportItem(rectangle, text);
                        }
                        else if (string.CompareOrdinal(item.Name, text) == 0)
                        {
                            reportItem = item;
                        }
                    }
                    if (reportItem != null)
                    {
                        reportSection = reportSection2;
                        return(reportItem);
                    }
                }
            }
            return(null);
        }
コード例 #16
0
 public override void WriteCustomNonSharedItemProps(RPLElementProps nonSharedProps, RPLWriter rplWriter, PageContext pageContext)
 {
     AspNetCore.ReportingServices.OnDemandReportRendering.Report report = ((AspNetCore.ReportingServices.OnDemandReportRendering.SubReport)base.m_source).Report;
     if (report != null && report.Language != null)
     {
         string text = null;
         if (report.Language.IsExpression)
         {
             ReportInstance instance = report.Instance;
             text = instance.Language;
         }
         else
         {
             text = report.Language.Value;
         }
         ((RPLSubReportProps)nonSharedProps).Language = text;
     }
 }
コード例 #17
0
        private void Init(AspNetCore.ReportingServices.OnDemandReportRendering.Report report)
        {
            Page page = ((ReportElementCollectionBase <AspNetCore.ReportingServices.OnDemandReportRendering.ReportSection>)report.ReportSections)[0].Page;

            this.PageHeightStr = page.PageHeight.ToString();
            this.PageWidthStr  = page.PageWidth.ToString();
            this.MarginTop     = page.TopMargin.ToMillimeters();
            this.MarginLeft    = page.LeftMargin.ToMillimeters();
            this.MarginBottom  = page.BottomMargin.ToMillimeters();
            this.MarginRight   = page.RightMargin.ToMillimeters();
            int count = report.ReportSections.Count;

            this.m_sectionPaginationSettings = new SectionPaginationSettings[count];
            for (int i = 0; i < count; i++)
            {
                this.m_sectionPaginationSettings[i] = new SectionPaginationSettings(((ReportElementCollectionBase <AspNetCore.ReportingServices.OnDemandReportRendering.ReportSection>)report.ReportSections)[i]);
            }
        }
コード例 #18
0
        public static string GetReportLanguage(AspNetCore.ReportingServices.OnDemandReportRendering.Report report)
        {
            string result = null;
            ReportStringProperty language = report.Language;

            if (language != null)
            {
                if (language.IsExpression)
                {
                    ReportInstance instance = report.Instance;
                    result = instance.Language;
                }
                else
                {
                    result = language.Value;
                }
            }
            return(result);
        }
コード例 #19
0
        public static int FindBoomark(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, string bookmarkId, ref string uniqueName, ref int lastPageCollected, ref bool reportDone)
        {
            int    result = 0;
            string text   = null;
            Stream chunk  = report.GetChunk(AspNetCore.ReportingServices.OnDemandReportRendering.Report.ChunkTypes.Interactivity, "Bookmarks");

            if (chunk != null && chunk.Length > 0)
            {
                chunk.Position = 0L;
                BinaryReader binaryReader = new BinaryReader(chunk);
                byte         b            = binaryReader.ReadByte();
                while (true)
                {
                    switch (b)
                    {
                    case 0:
                        break;

                    case 2:
                        lastPageCollected = binaryReader.ReadInt32();
                        reportDone        = binaryReader.ReadBoolean();
                        goto IL_0090;

                    default:
                        goto IL_0090;
                    }
                    text = binaryReader.ReadString();
                    if (SPBProcessing.CompareWithOrdinalComparison(bookmarkId, text, false) == 0)
                    {
                        uniqueName = binaryReader.ReadString();
                        return(binaryReader.ReadInt32());
                    }
                    binaryReader.ReadString();
                    binaryReader.ReadInt32();
                    binaryReader.ReadByte();
                    b = binaryReader.ReadByte();
                }
            }
            goto IL_0090;
IL_0090:
            return(result);
        }
コード例 #20
0
 public bool Render(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, ref Hashtable renderProperties, CreateAndRegisterStream createAndRegisterStream)
 {
     try
     {
         this.ParseDeviceInfo(ref deviceInfo);
         this.Render(report, deviceInfo, renderProperties, createAndRegisterStream);
         return(true);
     }
     catch (ReportRenderingException)
     {
         throw;
     }
     catch (Exception ex2)
     {
         if (AsynchronousExceptionDetection.IsStoppingException(ex2))
         {
             throw;
         }
         throw new ReportRenderingException(ex2, true);
     }
 }
コード例 #21
0
        public ReportPaginationInfo(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, Version serverRPLVersion, double pageHeight)
        {
            bool flag = false;

            this.m_stream = report.GetOrCreateChunk(AspNetCore.ReportingServices.OnDemandReportRendering.Report.ChunkTypes.Pagination, "PaginationInfo", out flag);
            if (this.m_stream != null)
            {
                if (flag)
                {
                    this.m_version    = serverRPLVersion;
                    this.m_pageHeight = pageHeight;
                    this.SavePaginationInfo();
                    this.m_paginatedPages = 0;
                    this.m_metadataPages  = new List <long>();
                    this.m_reportDone     = false;
                }
                else if (this.ExtractPaginationInfo(serverRPLVersion))
                {
                    this.m_stream.Close();
                    this.m_stream     = report.CreateChunk(AspNetCore.ReportingServices.OnDemandReportRendering.Report.ChunkTypes.Pagination, "PaginationInfo");
                    this.m_version    = serverRPLVersion;
                    this.m_pageHeight = pageHeight;
                    this.SavePaginationInfo();
                    this.m_paginatedPages = 0;
                    this.m_metadataPages  = new List <long>();
                    this.m_reportDone     = false;
                }
                else if (pageHeight != this.m_pageHeight)
                {
                    this.m_stream         = null;
                    this.m_version        = new Version(0, 0, 0);
                    this.m_paginatedPages = -1;
                    this.m_offsetLastPage = -1L;
                    this.m_offsetHeader   = -1L;
                    this.m_pageHeight     = 0.0;
                    this.m_metadataPages  = null;
                    this.m_reportDone     = false;
                }
            }
        }
コード例 #22
0
 public override void WriteCustomNonSharedItemProps(BinaryWriter spbifWriter, RPLWriter rplWriter, PageContext pageContext)
 {
     AspNetCore.ReportingServices.OnDemandReportRendering.Report report = ((AspNetCore.ReportingServices.OnDemandReportRendering.SubReport)base.m_source).Report;
     if (report != null && report.Language != null)
     {
         string text = null;
         if (report.Language.IsExpression)
         {
             ReportInstance instance = report.Instance;
             text = instance.Language;
         }
         else
         {
             text = report.Language.Value;
         }
         if (text != null)
         {
             spbifWriter.Write((byte)11);
             spbifWriter.Write(text);
         }
     }
 }
コード例 #23
0
 public bool RenderStream(string streamName, AspNetCore.ReportingServices.OnDemandReportRendering.Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, ref Hashtable renderProperties, CreateAndRegisterStream createAndRegisterStream)
 {
     try
     {
         if (string.IsNullOrEmpty(streamName))
         {
             return(false);
         }
         return(SPBProcessing.SPBProcessing.RenderSecondaryStream(report, createAndRegisterStream, streamName));
     }
     catch (ReportRenderingException)
     {
         throw;
     }
     catch (Exception ex2)
     {
         if (AsynchronousExceptionDetection.IsStoppingException(ex2))
         {
             throw;
         }
         throw new ReportRenderingException(ex2, true);
     }
 }
コード例 #24
0
        public bool Render(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, ref Hashtable someProps, CreateAndRegisterStream createAndRegisterStream)
        {
            double pageHeight = 1.7976931348623157E+308;

            using (SPBProcessing.SPBProcessing sPBProcessing = new SPBProcessing.SPBProcessing(report, createAndRegisterStream, pageHeight))
            {
                DeviceInfo deviceInfo2 = new DeviceInfo(deviceInfo);
                SPBContext sPBContext  = new SPBContext();
                sPBContext.StartPage                = 0;
                sPBContext.EndPage                  = 0;
                sPBContext.MeasureItems             = false;
                sPBContext.AddSecondaryStreamNames  = true;
                sPBContext.AddToggledItems          = deviceInfo2.ExpandToggles;
                sPBContext.AddFirstPageHeaderFooter = true;
                sPBProcessing.SetContext(sPBContext);
                using (IWordWriter writer = this.NewWordWriter())
                {
                    WordRenderer wordRenderer = this.NewWordRenderer(createAndRegisterStream, deviceInfo2, sPBProcessing, writer, report.Name);
                    try
                    {
                        return(wordRenderer.Render());
                    }
                    catch (ReportRenderingException)
                    {
                        throw;
                    }
                    catch (Exception ex2)
                    {
                        if (AsynchronousExceptionDetection.IsStoppingException(ex2))
                        {
                            throw;
                        }
                        throw new ReportRenderingException(ex2, true);
                    }
                }
            }
        }
コード例 #25
0
 public Report(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, PageContext pageContext, string rplVersion, bool defaultVersion)
 {
     this.m_report      = report;
     this.m_pageContext = pageContext;
     if (!string.IsNullOrEmpty(rplVersion))
     {
         char[] separator = new char[1]
         {
             '.'
         };
         string[] array = rplVersion.Split(separator);
         if (array.Length < 2)
         {
             this.m_rplVersion = new Version(10, 3, 0);
         }
         else
         {
             int major = SPBProcessing.ParseInt(array[0], 10);
             int minor = SPBProcessing.ParseInt(array[1], 3);
             int build = 0;
             if (array.Length > 2)
             {
                 build = SPBProcessing.ParseInt(array[2], 0);
             }
             this.m_rplVersion = new Version(major, minor, build);
         }
     }
     else if (defaultVersion)
     {
         this.m_rplVersion = new Version(10, 3, 0);
     }
     else
     {
         this.m_rplVersion = new Version(10, 6, 0);
     }
     this.m_pageContext.VersionPicker = RPLReader.CompareRPLVersions(this.m_rplVersion);
 }
コード例 #26
0
        private static Stream GetInteractivityChunck(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, string chunkName, int page, out int lastPage)
        {
            lastPage = 0;
            Stream stream = null;
            bool   flag   = false;

            stream = ((page != 1) ? report.GetChunk(AspNetCore.ReportingServices.OnDemandReportRendering.Report.ChunkTypes.Interactivity, chunkName) : report.GetOrCreateChunk(AspNetCore.ReportingServices.OnDemandReportRendering.Report.ChunkTypes.Interactivity, chunkName, out flag));
            if (stream == null)
            {
                return(null);
            }
            if (!flag)
            {
                long num = stream.Length - 9;
                if (num > 0)
                {
                    stream.Seek(num, SeekOrigin.Begin);
                    BinaryReader binaryReader = new BinaryReader(stream);
                    binaryReader.ReadByte();
                    num = 9 + binaryReader.ReadInt64();
                    stream.Seek(-num, SeekOrigin.End);
                    binaryReader.ReadByte();
                    lastPage = binaryReader.ReadInt32();
                    if (binaryReader.ReadBoolean())
                    {
                        return(null);
                    }
                    stream.Seek(-num, SeekOrigin.End);
                }
                else
                {
                    stream.Seek(0L, SeekOrigin.Begin);
                }
            }
            return(stream);
        }
コード例 #27
0
 public PaginationSettings(AspNetCore.ReportingServices.OnDemandReportRendering.Report report)
 {
     this.Init(report);
     this.ValidateFields(0, -1.0);
 }
コード例 #28
0
 protected override bool InvokeRenderer(IRenderingExtension renderer, AspNetCore.ReportingServices.OnDemandReportRendering.Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, ref Hashtable renderProperties, CreateAndRegisterStream createAndRegisterStream)
 {
     return(renderer.RenderStream(this.m_streamName, report, reportServerParameters, deviceInfo, clientCapabilities, ref renderProperties, createAndRegisterStream));
 }
コード例 #29
0
 public bool Render(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, ref Hashtable renderProperties, CreateAndRegisterStream createAndRegisterStream)
 {
     try
     {
         this.ParseDeviceinfo(deviceInfo);
         Stream     output     = this.CreateFinalOutputStream(report.Name, createAndRegisterStream);
         MainEngine mainEngine = new MainEngine(createAndRegisterStream, this);
         if (report.HasDocumentMap && !this.m_omitDocumentMap)
         {
             this.m_addedDocMap = mainEngine.AddDocumentMap(report.DocumentMap);
             if (this.m_addedDocMap)
             {
                 mainEngine.NextPage();
             }
         }
         using (AspNetCore.ReportingServices.Rendering.SPBProcessing.SPBProcessing sPBProcessing = new AspNetCore.ReportingServices.Rendering.SPBProcessing.SPBProcessing(report, createAndRegisterStream, 1.7976931348623157E+308))
         {
             SPBContext sPBContext = new SPBContext();
             sPBContext.StartPage               = 0;
             sPBContext.EndPage                 = 0;
             sPBContext.MeasureItems            = false;
             sPBContext.AddSecondaryStreamNames = true;
             sPBContext.AddToggledItems         = true;
             sPBContext.AddOriginalValue        = true;
             sPBProcessing.SetContext(sPBContext);
             RPLReport rPLReport = null;
             bool      flag      = true;
             while (!sPBProcessing.Done)
             {
                 sPBProcessing.GetNextPage(out rPLReport);
                 if (rPLReport != null)
                 {
                     if (flag)
                     {
                         flag = false;
                         if (sPBProcessing.Done)
                         {
                             mainEngine.AdjustFirstWorksheetName(report.Name, this.m_addedDocMap);
                         }
                     }
                     else
                     {
                         mainEngine.NextPage();
                     }
                     mainEngine.RenderRPLPage(rPLReport, !this.m_simplePageHeaders, this.m_suppressOutlines);
                     rPLReport.Release();
                     rPLReport = null;
                 }
             }
             mainEngine.Save(output);
         }
         if (report.JobContext != null)
         {
             IJobContext jobContext = report.JobContext;
             lock (jobContext.SyncRoot)
             {
                 if (jobContext.AdditionalInfo.ScalabilityTime == null)
                 {
                     jobContext.AdditionalInfo.ScalabilityTime = new ScaleTimeCategory();
                 }
                 jobContext.AdditionalInfo.ScalabilityTime.Rendering = mainEngine.TotalScaleTimeMs;
                 if (jobContext.AdditionalInfo.EstimatedMemoryUsageKB == null)
                 {
                     jobContext.AdditionalInfo.EstimatedMemoryUsageKB = new EstimatedMemoryUsageKBCategory();
                 }
                 jobContext.AdditionalInfo.EstimatedMemoryUsageKB.Rendering = mainEngine.PeakMemoryUsageKB;
             }
         }
         mainEngine.Dispose();
         return(false);
     }
     catch (ReportRenderingException)
     {
         throw;
     }
     catch (Exception ex2)
     {
         if (AsynchronousExceptionDetection.IsStoppingException(ex2))
         {
             throw;
         }
         throw new ReportRenderingException(ex2, true);
     }
 }
コード例 #30
0
        protected override void Render(AspNetCore.ReportingServices.OnDemandReportRendering.Report report, NameValueCollection deviceInfo, Hashtable renderProperties, CreateAndRegisterStream createAndRegisterStream)
        {
            PaginationSettings paginationSettings = new PaginationSettings(report, deviceInfo);
            string             text = paginationSettings.OutputFormat.ToString().ToUpperInvariant();
            bool flag = true;

            if (text == "TIFF")
            {
                text = "TIF";
                flag = false;
            }
            else if (text == "EMFPLUS")
            {
                text = "EMF";
            }
            if (text == "EMF")
            {
                paginationSettings.DynamicImageDpiX = 96;
                paginationSettings.DynamicImageDpiY = 96;
                paginationSettings.DpiX             = this.m_printDpiX;
                paginationSettings.DpiY             = this.m_printDpiY;
                int measureImageDpiX = default(int);
                int measureImageDpiY = default(int);
                ImageWriter.GetScreenDpi(out measureImageDpiX, out measureImageDpiY);
                paginationSettings.MeasureImageDpiX = measureImageDpiX;
                paginationSettings.MeasureImageDpiY = measureImageDpiY;
            }
            else
            {
                paginationSettings.MeasureImageDpiX = paginationSettings.DpiX;
                paginationSettings.MeasureImageDpiY = paginationSettings.DpiY;
            }
            paginationSettings.MeasureTextDpi = paginationSettings.DpiX;
            Stream stream = default(Stream);

            using (HPBProcessing.HPBProcessing hPBProcessing = new HPBProcessing.HPBProcessing(report, paginationSettings, createAndRegisterStream, ref renderProperties))
            {
                hPBProcessing.SetContext(hPBProcessing.PaginationSettings.StartPage, hPBProcessing.PaginationSettings.EndPage);
                using (Renderer renderer = new Renderer(true))
                {
                    stream = createAndRegisterStream(report.Name + (flag ? ('_' + hPBProcessing.PaginationSettings.StartPage.ToString(CultureInfo.InvariantCulture)) : ""), text, null, "image/" + text, !flag, StreamOper.CreateAndRegister);
                    using (ImageWriter imageWriter = new ImageWriter(renderer, stream, false, createAndRegisterStream, paginationSettings.MeasureImageDpiX, paginationSettings.MeasureImageDpiY))
                    {
                        imageWriter.OutputFormat = hPBProcessing.PaginationSettings.OutputFormat;
                        hPBProcessing.PaginationSettings.UseGenericDefault = !imageWriter.IsEmf;
                        imageWriter.BeginReport(hPBProcessing.PaginationSettings.DpiX, hPBProcessing.PaginationSettings.DpiY);
                        int num = hPBProcessing.PaginationSettings.StartPage;
                        while (true)
                        {
                            RPLReport rPLReport = default(RPLReport);
                            hPBProcessing.GetNextPage(out rPLReport);
                            if (rPLReport == null)
                            {
                                break;
                            }
                            if (flag && num > hPBProcessing.PaginationSettings.StartPage)
                            {
                                stream = (imageWriter.OutputStream = createAndRegisterStream(report.Name + '_' + num, text, null, "image/" + text, !flag, StreamOper.CreateForPersistedStreams));
                            }
                            renderer.ProcessPage(rPLReport, num, hPBProcessing.SharedFontCache, hPBProcessing.GlyphCache);
                            rPLReport.Release();
                            rPLReport = null;
                            num++;
                        }
                        imageWriter.EndReport();
                    }
                }
            }
            stream.Flush();
        }