Example #1
0
        protected override void OnPrintPage(PrintPageEventArgs e)
        {
            base.OnPrintPage(e);

            if (m_spread.Sheets.Count > 0)
            {
                PrintInfo Info = m_spread.Sheets[0].PrintInfo;
                Rectangle r;
                if (UsePrintableArea)
                {
                    RectangleF PrintableArea = DefaultPageSettings.PrintableArea;
                    r = new Rectangle(
                        e.PageBounds.X + DefaultPageSettings.Margins.Left - (int)Math.Round(PrintableArea.Left),
                        e.PageBounds.Y + DefaultPageSettings.Margins.Top - (int)Math.Round(PrintableArea.Top),
                        e.PageBounds.Width - DefaultPageSettings.Margins.Left - DefaultPageSettings.Margins.Right,
                        e.PageBounds.Height - DefaultPageSettings.Margins.Top - DefaultPageSettings.Margins.Bottom
                        );
                }
                else
                {
                    r = new Rectangle(
                        e.PageBounds.X + DefaultPageSettings.Margins.Left,
                        e.PageBounds.Y + DefaultPageSettings.Margins.Top,
                        e.PageBounds.Width - DefaultPageSettings.Margins.Left - DefaultPageSettings.Margins.Right,
                        e.PageBounds.Height - DefaultPageSettings.Margins.Top - DefaultPageSettings.Margins.Bottom
                        );
                }

                int Foot, FootW, Heard;
                Foot  = (int)Math.Round(e.Graphics.MeasureString(Info.Footer, m_spread.Font).Height);
                FootW = (int)Math.Round(e.Graphics.MeasureString(Info.Footer, m_spread.Font).Width);
                Heard = (int)Math.Round(e.Graphics.MeasureString(Info.Header, m_spread.Font).Height);

                r         = new Rectangle(r.X, r.Y + Heard, r.Width, r.Height - Foot - Heard);
                PageCount = m_spread.GetOwnerPrintPageCount(e.Graphics, r, 0);
                if (PageCount > 0)
                {
                    m_spread.OwnerPrintDraw(e.Graphics, r, 0, PageIndex);
                    PageIndex += 1;

                    if (UsePrintableArea)
                    {
                        if (e.PageSettings.PrinterSettings.PrintRange == PrintRange.SomePages)
                        {
                            e.HasMorePages = ((PageIndex <= PageCount) && e.PageSettings.PrinterSettings.ToPage >= PageIndex);
                        }
                        else
                        {
                            e.HasMorePages = (PageIndex <= PageCount);
                        }
                    }
                    else
                    {
                        e.HasMorePages = (PageIndex <= PageCount);
                    }
                }
            }
        }