예제 #1
0
        /// <summary>
        /// Process existing pages
        /// </summary>
        /// <returns>Null if page still painting, PdfBitmap object if page successfully rendered.</returns>
        private bool ProcessExisting(PdfBitmap bitmap, PdfPage page, Rectangle pageRect, PageRotate pageRotate, RenderFlags renderFlags)
        {
#if PDF_ENABLE_XFA
            if (page.Document.FormFill != null && page.Document.FormFill.DocumentType == DocumentTypes.DynamicXfa)
            {
                this[page].status = ProgressiveRenderingStatuses.RenderDone + 2;
            }
#endif
            switch (this[page].status)
            {
            case ProgressiveRenderingStatuses.RenderReader:
                this[page].status = page.StartProgressiveRender(bitmap, pageRect.X, pageRect.Y, pageRect.Width, pageRect.Height, pageRotate, renderFlags, null);
                if (this[page].status == ProgressiveRenderingStatuses.RenderDone)
                {
                    return(true);
                }
                return(false);                        //Start rendering. Return nothing.

            case ProgressiveRenderingStatuses.RenderDone:
                page.CancelProgressiveRender();
                this[page].status = ProgressiveRenderingStatuses.RenderDone + 2;
                return(true);                        //Stop rendering. Return image.

            case ProgressiveRenderingStatuses.RenderDone + 2:
                return(true);                        //Rendering already stoped. return image

            case ProgressiveRenderingStatuses.RenderDone + 3:
                this[page].status = ProgressiveRenderingStatuses.RenderDone + 2;
                page.RenderEx(bitmap, pageRect.X, pageRect.Y, pageRect.Width, pageRect.Height, pageRotate, renderFlags);
                return(true);                        //Rendering in non progressive mode

            case ProgressiveRenderingStatuses.RenderDone + 4:
                this[page].status = ProgressiveRenderingStatuses.RenderDone + 2;
                DrawThumbnail(bitmap, page, pageRect, pageRotate, renderFlags);
                return(true);                        //Rendering thumbnails

            case ProgressiveRenderingStatuses.RenderTobeContinued:
                this[page].status = page.ContinueProgressiveRender();
                return(false);                        //Continue rendering. Return nothing.

            case ProgressiveRenderingStatuses.RenderFailed:
            default:
                bitmap.FillRectEx(pageRect.X, pageRect.Y, pageRect.Width, pageRect.Height, Color.Red.ToArgb());
                bitmap.FillRectEx(pageRect.X + 5, pageRect.Y + 5, pageRect.Width - 10, pageRect.Height - 10, Color.White.ToArgb());
                page.CancelProgressiveRender();
                this[page].status = ProgressiveRenderingStatuses.RenderDone + 2;
                return(true);                        //An error has occurred. Stop rendering. return special image
            }
        }
예제 #2
0
        /// <summary>
        /// Process existing pages
        /// </summary>
        /// <returns>Null if page still painting, PdfBitmap object if page successfully rendered.</returns>
        private bool ProcessExisting(PdfBitmap bitmap, PdfPage page, Int32Rect pageRect, PageRotate pageRotate, RenderFlags renderFlags)
        {
            switch (this[page].status)
            {
            case ProgressiveRenderingStatuses.RenderReader:
                this[page].status = page.StartProgressiveRender(bitmap, pageRect.X, pageRect.Y, pageRect.Width, pageRect.Height, pageRotate, renderFlags, null);
                if (this[page].status == ProgressiveRenderingStatuses.RenderDone)
                {
                    return(true);
                }
                return(false);                        //Start rendering. Return nothing.

            case ProgressiveRenderingStatuses.RenderDone:
                page.CancelProgressiveRender();
                this[page].status = ProgressiveRenderingStatuses.RenderDone + 2;
                return(true);                        //Stop rendering. Return image.

            case ProgressiveRenderingStatuses.RenderDone + 2:
                return(true);                        //Rendering already stoped. return image

            case ProgressiveRenderingStatuses.RenderDone + 3:
                this[page].status = ProgressiveRenderingStatuses.RenderDone + 2;
                page.RenderEx(bitmap, pageRect.X, pageRect.Y, pageRect.Width, pageRect.Height, pageRotate, renderFlags);
                return(true);                        //Rendering in non progressive mode

            case ProgressiveRenderingStatuses.RenderDone + 4:
                this[page].status = ProgressiveRenderingStatuses.RenderDone + 2;
                DrawThumbnail(bitmap, page, pageRect, pageRotate, renderFlags);
                return(true);                        //Rendering thumbnails

            case ProgressiveRenderingStatuses.RenderTobeContinued:
                this[page].status = page.ContinueProgressiveRender();
                return(false);                        //Continue rendering. Return nothing.

            case ProgressiveRenderingStatuses.RenderFailed:
            default:
                bitmap.FillRectEx(pageRect.X, pageRect.Y, pageRect.Width, pageRect.Height, Helpers.ToArgb(Colors.Red));
                bitmap.FillRectEx(pageRect.X + 5, pageRect.Y + 5, pageRect.Width - 10, pageRect.Height - 10, Helpers.ToArgb(Colors.White));
                page.CancelProgressiveRender();
                this[page].status = ProgressiveRenderingStatuses.RenderDone + 2;
                return(true);                        //An error has occurred. Stop rendering. return special image
            }
        }