Ejemplo n.º 1
0
        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));
        }