public static IDictionary <int, byte[]> ConvertPdfToPng(byte[] pdfBytes, RenderType type, int pageNumber, bool antiAlias = false, float dpi = 150, Size size = new Size(), string password = "") { if (pdfBytes == null || pdfBytes.Length.Equals(0)) { throw new ArgumentNullException(nameof(pdfBytes)); } var output = new ConcurrentDictionary <int, byte[]>(); var pageStart = pageNumber; var pageEnd = pageNumber + 1; using (MuPDF pdfDoc = new MuPDF(pdfBytes, password)) { pdfDoc.Page = pageNumber; pdfDoc.AntiAlias = antiAlias && !type.Equals(RenderType.Monochrome); // no point in anti-alias-ing with Monochrome using (MemoryStream outputStream = new MemoryStream()) { var width = 0; var height = 0; var maxSize = 1000; using (var bitmap = ResizeImage(size, pdfDoc.GetBitmap(width, height, dpi, dpi, 0, type, false, false, maxSize))) { bitmap.Save(outputStream, ImageFormat.Png); output.TryAdd(pageNumber, outputStream.ToArray()); } } } return(output.ToDictionary(kvp => kvp.Key, kvp => kvp.Value)); }