/// <summary>
        /// This is the event handler for PrintDocument.Paginate.
        /// It fires when the PrintManager requests print preview
        /// </summary>
        /// <param name="sender">PrintDocument</param>
        /// <param name="e">Paginate Event Arguments</param>
        private void Paginate(object sender, PaginateEventArgs e)
        {
            if (pages.Count > 0)
            {
                pages.Clear();
            }
            var mgr = new C1RichTextViewManager {
                Document = rtb.Document
            };
            var layout      = rtb.ViewManager.PresenterInfo as C1PageLayout;
            var contentSize = new Size(layout.Width - layout.Padding.Left - layout.Padding.Right, layout.Height - layout.Padding.Top - layout.Padding.Bottom);

            // print the pages outside the visual tree
            var elements = mgr.OfflinePaint(contentSize).ToList();

            foreach (var el in elements)
            {
                var page   = (Grid)printTemplate.LoadContent();
                var canvas = el as Canvas;
                if (canvas != null)
                {
                    canvas.Margin = layout.Padding;
                }
                page.Children.Clear();
                page.Children.Add(canvas);
                pages.Add(page);
            }
            PrintDocument printDoc = (PrintDocument)sender;

            // Report the number of preview pages
            printDoc.SetPreviewPageCount(pages.Count, PreviewPageCountType.Intermediate);
        }
        public C1RichTextBoxPaginator(C1RichTextBox rtb, Size pageSize, Thickness margin)
        {
            var mgr = new C1RichTextViewManager { Document = rtb.Document };

            // PageSize, Margin and ContentSize
            PageSize = pageSize;
            _margin = margin;
            var contentSize = new Size(PageSize.Width - margin.Left - margin.Right, PageSize.Height - margin.Top - margin.Bottom);

            // print the pages outside the visual tree
            _pages = mgr.OfflinePaint(contentSize).ToList();
        }
Example #3
0
        public C1RichTextBoxPaginator(C1RichTextBox rtb, Size pageSize, Thickness margin)
        {
            var mgr = new C1RichTextViewManager {
                Document = rtb.Document
            };

            // PageSize, Margin and ContentSize
            PageSize = pageSize;
            _margin  = margin;
            var contentSize = new Size(PageSize.Width - margin.Left - margin.Right, PageSize.Height - margin.Top - margin.Bottom);

            // print the pages outside the visual tree
            _pages = mgr.OfflinePaint(contentSize).ToList();
        }