Exemple #1
0
        public static BitmapSource Render(this PdfDocumentWrapper doc, int page, double factor, bool fixDpi = true)
        {
            var scale = DisplayDeviceHelper.GetCurrentScaleFactor();
            var dpiX  = fixDpi ? scale.Horizontal * DisplayDeviceHelper.DefaultDpi : 96;
            var dpiY  = fixDpi ? scale.Vertical * DisplayDeviceHelper.DefaultDpi : 96;

            Bitmap bitmap;

            lock (LockObj)
            {
                var size       = doc.PdfDocument.PageSizes[page];
                var realWidth  = (int)Math.Round(size.Width * scale.Horizontal * factor);
                var realHeight = (int)Math.Round(size.Height * scale.Vertical * factor);

                bitmap = doc.PdfDocument.Render(page, realWidth, realHeight, dpiX, dpiY, PdfRotation.Rotate0,
                                                PdfRenderFlags.LimitImageCacheSize | PdfRenderFlags.LcdText | PdfRenderFlags.Annotations |
                                                PdfRenderFlags.ForPrinting, true) as Bitmap;
            }

            var bs = bitmap?.ToBitmapSource();

            bitmap?.Dispose();

            bs?.Freeze();
            return(bs);
        }
        public void Refresh()
        {
            var oldD = PdfDocument;

            PdfStream.Position = 0;
            var newObj = new PdfDocumentWrapper(PdfStream);

            PdfDocument = newObj.PdfDocument;
            PdfStream   = newObj.PdfStream;

            oldD.Dispose();
        }
Exemple #3
0
        public static BitmapSource RenderThumbnail(this PdfDocumentWrapper doc, int page)
        {
            lock (LockObj)
            {
                if (_renderCount++ == 50)
                {
                    doc.Refresh();
                    _renderCount = 0;
                }
            }

            var size    = doc.PdfDocument.PageSizes[page];
            var factorX = 60d / size.Width;
            var factorY = 120d / size.Height;

            return(doc.Render(page, Math.Min(factorX, factorY), false));
        }