C#将PDF文件转为图片

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

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

Install-Package PdfiumViewer -Version 2.13.0

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

PDF转图片类:

    class PdfToPicture
    {
        /// <summary>
        /// 将PDF转换为图片
        /// </summary>
        /// <param name="pdfPath">pdf文件位置</param>
        /// <param name="pageNumber">pdf文件张数</param>
        /// <param name="size">pdf文件尺寸</param>
        /// <param name="outputPath">输出图片位置与名称</param>
        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的错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值