public void Validate_range()
        {
            var baseDoc   = new RejectsDocument(Enumerable.Repeat(1, 100).Select(i => new Reject()).ToList(), false);
            var flowDoc   = baseDoc.Build();
            var paginator = new WrapDocumentPaginator(flowDoc, baseDoc, PageRangeSelection.UserPages, new PageRange(1, 100));

            paginator.GetPage(0);
            Assert.AreEqual(2, paginator.PageCount);
        }
        public static RenderTargetBitmap ToBitmap(WrapDocumentPaginator dp, int pageNum, bool contentOnly)
        {
            var page       = dp.GetPage(pageNum);
            var pagevisual = page.Visual as ContainerVisual;
            var pageSize   = page.Size;

            if (contentOnly)
            {
                var rects = new List <Rect>();
                foreach (var item in pagevisual.Children)
                {
                    var container     = item as ContainerVisual;
                    var offset        = container.Transform;
                    var containerItem = container.Descendants <ContainerVisual>().ToArray()[1];
                    var rect          = containerItem.DescendantBounds;
                    rect.Offset(offset.Value.OffsetX, offset.Value.OffsetY);
                    rects.Add(rect);
                }
                var pt = new Point {
                    X = rects.Min(r => r.X),
                    Y = rects.Min(r => r.Y)
                };
                pt.X = pt.X < 0 ? 0 : pt.X;
                pt.Y = pt.Y < 0 ? 0 : pt.Y;
                var maxWidth  = rects.Max(r => (r.X + r.Width)) + 2;
                var maxHeight = rects.Max(r => (r.Y + r.Height)) + 2;
                var size      = new Size(maxWidth - pt.X, maxHeight - pt.Y);
                pageSize          = size;
                pagevisual.Offset = new Vector(-pt.X, -pt.Y);
            }
            var renderBmp = new RenderTargetBitmap((int)pageSize.Width, (int)pageSize.Height, 96d, 96d, PixelFormats.Pbgra32);

            renderBmp.Render(pagevisual);
            var dWidth  = (int)pageSize.Width;
            var dHeight = (int)pageSize.Height;
            var dStride = dWidth * 4;

            byte[] pixels = new byte[dHeight * dStride];
            for (var j = 0; j < pixels.Length; j++)
            {
                pixels[j] = 0xFF;
            }
            var bg = BitmapSource.Create(dWidth, dHeight, 96, 96, PixelFormats.Pbgra32, null, pixels, dStride);
            var dv = new DrawingVisual();
            var dc = dv.RenderOpen();

            dc.DrawImage(bg, new Rect(0, 0, dWidth, dHeight));
            dc.DrawImage(renderBmp, new Rect(0, 0, dWidth, dHeight));
            dc.Close();
            var resultBitmap = new RenderTargetBitmap((int)dWidth, (int)dHeight, 96d, 96d, PixelFormats.Pbgra32);

            resultBitmap.Render(dv);
            return(resultBitmap);
        }