private void CreateDataPageCanvas()
        {
            this.activeCanvas = new PrintCanvas
            {
                Width        = this.PageWidth,
                Height       = this.PageHeight,
                HeaderHeight = this.PageHeaderHeight,
                FooterHeight = this.PageFooterHeight,
                TopMargin    = this.pageMarginTop,
                BottomMargin = this.pageMarginBottom,
                Margin       = new Thickness(5),
                TopOffset    = this.pageMarginTop
            };

            if (this.pageHeader != null)
            {
                XElement headerCanvas = this.pageHeader.GetCanvasXml();

                foreach (XElement item in headerCanvas.GetReportObjects())
                {
                    this.activeCanvas.AddPageHeaderObject(item);
                }

                this.activeCanvas.TopOffset += this.activeCanvas.HeaderHeight;
            }

            if (this.isSingleTable)
            {
                this.SetSectionHeader(0);
            }
        }
        private void CreateSinglePageCanvas(XElement canvasXml, SectionTypeEnum sectionType)
        {
            PrintCanvas result = new PrintCanvas
            {
                Width  = this.PageWidth,
                Height = this.PageHeight
            };

            foreach (XElement item in canvasXml.GetReportObjects())
            {
READD:
                double bottom = 0;

                string textOverflow = string.Empty;

                result.AddObject(item, sectionType, out bottom, out textOverflow);

                if (!textOverflow.IsNullEmptyOrWhiteSpace())
                {
                    item.Attribute("Text").Value = textOverflow;

                    this.AddCanvas(result);

                    result = new PrintCanvas
                    {
                        Width  = this.PageWidth,
                        Height = this.PageHeight
                    };

                    goto READD;
                }
            }

            this.AddCanvas(result);
        }
        private void CompleteDataPageCanvas()
        {
            if (this.pageFooter != null)
            {
                XElement footerCanvas = this.pageFooter.GetCanvasXml();

                foreach (XElement item in footerCanvas.GetReportObjects())
                {
                    this.activeCanvas.AddPageFooterObject(item);
                }
            }

            this.AddCanvas(this.activeCanvas);

            this.activeCanvas = null;
        }
        private void AddCanvas(PrintCanvas canvas)
        {
            int key = this.canvasesDictionary.Count;

            this.canvasesDictionary.Add(key, canvas);
        }