public override DocumentPage GetPage(int pageNumber) { // create page element var pageTemplate = new PageTemplate(); // set margins pageTemplate.SetPageMargin(_margin); // set content pageTemplate.PageContent.Child = _pages[pageNumber]; pageTemplate.PageContent.Stretch = _scaleMode == ScaleMode.ActualSize ? System.Windows.Media.Stretch.None : System.Windows.Media.Stretch.Uniform; // set footer text pageTemplate.FooterRight.Text = string.Format("Page {0} of {1}", pageNumber + 1, _pages.Count); // arrange the elements on the page pageTemplate.Arrange(new Rect(0, 0, _pageSize.Width, _pageSize.Height)); // return new document page return new DocumentPage(pageTemplate); }