/// <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 } }
/// <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 } }