编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

PDF如何拆分为图片并保存,分享完整代码

wxchong 2024-07-20 08:47:25 开源技术 11 ℃ 0 评论

CSharp中我一般使用 itextSharp与Spire来操作PDF文件,一般生成PDF、转换PDF、合并PDF都很方便,但是 itextSharp不能直接将PDF转换为图片。

当然有多种方式可以实现PDF转为图片,先提供一种用起来比较方便的方式:

首先,NuGet中下载安装 PdfiumViewer与ImageResizer.Plugins.PdfiumRenderer.Pdfium.Dll

添加引用:

using System.Drawing.Imaging;

using PdfiumViewer;

using System.Drawing;

  /// <summary>
        /// 将PDF转换为图片
        /// </summary>
        /// <param name="pdfPath">pdf文件位置</param>
        /// <param name="pageNumber">pdf文件张数</param>
        /// <param name="size">pdf文件尺寸</param>
        /// <param name="outputPath">输出图片位置与名称</param>
        public static 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 System.Drawing.Image GetPageImage(int pageNumber, Size size, PdfiumViewer.PdfDocument document, int dpi)
        {
            return document.Render(pageNumber - 1, size.Width, size.Height, dpi, dpi, PdfRenderFlags.Annotations);
        }

        /// <summary>
        /// pdf文件绝对路径
        /// </summary>
        /// <param name="sourcePdf"></param>
        public static void Pdf2Images(string sourcePdf)
        {
            var pdf = PdfiumViewer.PdfDocument.Load(sourcePdf);
            var pdfpage = pdf.PageCount;
            var pagesizes = pdf.PageSizes;

            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;
                RenderPage(sourcePdf, i, size, Path.GetDirectoryName(sourcePdf) + "\\img_" + i + @".jpg");
            }
        }

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表