/// <summary> /// Renders a page of the PDF document to an image. /// </summary> /// <param name="page">Number of the page to render.</param> /// <param name="width">Width of the rendered image.</param> /// <param name="height">Height of the rendered image.</param> /// <param name="dpiX">Horizontal DPI.</param> /// <param name="dpiY">Vertical DPI.</param> /// <param name="flags">Flags used to influence the rendering.</param> /// <returns>The rendered image.</returns> public Image Render(int page, int width, int height, float dpiX, float dpiY, PdfRenderFlags flags) { if (_disposed) { throw new ObjectDisposedException(GetType().Name); } var bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb); bitmap.SetResolution(dpiX, dpiY); var data = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, bitmap.PixelFormat); try { var handle = NativePdfiumMethods.FPDFBitmap_CreateEx(width, height, 4, data.Scan0, width * 4); try { uint background = (flags & PdfRenderFlags.Transparent) == 0 ? 0xFFFFFFFF : 0x00FFFFFF; NativePdfiumMethods.FPDFBitmap_FillRect(handle, 0, 0, width, height, background); bool success = _file.RenderPDFPageToBitmap( page, handle, (int)dpiX, (int)dpiY, 0, 0, width, height, this.FlagsToFPDFFlags(flags) ); if (!success) { throw new Win32Exception(); } } finally { NativePdfiumMethods.FPDFBitmap_Destroy(handle); } } finally { bitmap.UnlockBits(data); } return(bitmap); }