internal ReportPaginationInfo(Microsoft.ReportingServices.OnDemandReportRendering.Report report, Version serverRPLVersion, double pageHeight) { bool isNewChunk = false; m_stream = report.GetOrCreateChunk(Microsoft.ReportingServices.OnDemandReportRendering.Report.ChunkTypes.Pagination, "PaginationInfo", out isNewChunk); if (m_stream != null) { if (isNewChunk) { m_version = serverRPLVersion; m_pageHeight = pageHeight; SavePaginationInfo(); m_paginatedPages = 0; m_metadataPages = new List <long>(); m_reportDone = false; } else if (ExtractPaginationInfo(serverRPLVersion)) { m_stream.Close(); m_stream = report.CreateChunk(Microsoft.ReportingServices.OnDemandReportRendering.Report.ChunkTypes.Pagination, "PaginationInfo"); m_version = serverRPLVersion; m_pageHeight = pageHeight; SavePaginationInfo(); m_paginatedPages = 0; m_metadataPages = new List <long>(); m_reportDone = false; } else if (pageHeight != m_pageHeight) { m_stream = null; m_version = new Version(0, 0, 0); m_paginatedPages = -1; m_offsetLastPage = -1L; m_offsetHeader = -1L; m_pageHeight = 0.0; m_metadataPages = null; m_reportDone = false; } } }
private static Stream GetInteractivityChunck(Microsoft.ReportingServices.OnDemandReportRendering.Report report, string chunkName, int page, out int lastPage) { lastPage = 0; Stream stream = null; bool isNewChunk = false; stream = ((page != 1) ? report.GetChunk(Microsoft.ReportingServices.OnDemandReportRendering.Report.ChunkTypes.Interactivity, chunkName) : report.GetOrCreateChunk(Microsoft.ReportingServices.OnDemandReportRendering.Report.ChunkTypes.Interactivity, chunkName, out isNewChunk)); if (stream == null) { return(null); } if (!isNewChunk) { 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); }