C#将PDF文件转为图片

市面上有不少能够将PDF转换为图片的第三方dll,但是它们要么收费,要么免费带水印,或者需要先安装软件才能使用(比如Acrobat或者Ghostscript),那么有没有更好的方法呢,答案是有的。

-----------------------------------------------------------------------stackoverflow牛逼-----------------------------------------------------------------------------

首先我们需要导入两个nuget包,导入语句如下:

Install-Package PdfiumViewer -Version 2.13.0

Install-Package ImageResizer.Plugins.PdfiumRenderer.Pdfium.Dll -Version 1.0.1

PDF转图片类:

    class PdfToPicture
    {
        /// 
        /// 将PDF转换为图片
        /// 
        /// pdf文件位置
        /// pdf文件张数
        /// pdf文件尺寸
        /// 输出图片位置与名称
        public void RenderPage(string pdfPath, int pageNumber, System.Drawing.Size size, string outputPath, int dpi = 300)
        {
            using (var document = PdfiumViewer.PdfDocument.Load(pdfPath))
            using (var stream = new FileStream(outputPath, FileMode.Create))
            using (var image = GetPageImage(pageNumber, size, document, dpi))
            {
                image.Save(stream, ImageFormat.Jpeg);
            }
        }
        private static Image GetPageImage(int pageNumber, Size size, PdfiumViewer.PdfDocument document, int dpi)
        {
            return document.Render(pageNumber - 1, size.Width, size.Height, dpi, dpi, PdfRenderFlags.Annotations);
        }
    }

调用示例:

    static void Main(string[] args)
        {
            var pdf = PdfDocument.Load(@"E:\BBBBBPDF\sample.pdf");
            var pdfpage = pdf.PageCount;
            var pagesizes = pdf.PageSizes;

            PdfToPicture p2p = new PdfToPicture();
            for (int i = 1; i <= pdfpage; i++)
            {
                Size size = new Size();
                size.Height = (int)pagesizes[(i - 1)].Height;
                size.Width = (int)pagesizes[(i - 1)].Width;
                p2p.RenderPage(@"E:\BBBBBPDF\sample.pdf", i, size, @"E:\BBBBBPDF\sample" + i + @".jpg");
            }
            Console.WriteLine("Success");
            Console.Read();
        }

番外:如果仅导入了PdfiumViewer会发现程序并没有报错,但是一旦运行就会报依赖PDfium.dll的错

你可能感兴趣的:(个人笔记.net)