c# pdf转图片

需安装nuget包:

<package id="PdfiumViewer" version="2.13.0.0" targetFramework="net45" />

<package id="HiraokaHyperTools.PdfiumViewer.Native.Windows" version="0.1.5637" targetFramework="net45" />

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<br><br><br>using PdfiumViewer;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.IO;
 
namespace IDH.Common.Utility
{
    public partial class PDFHelper
    {
        /// <summary>
        /// <param name="filePath">pdf文件路径</param>
        /// <param name="imageSaveNameList">图片名</param>
        /// <param name="image">文件格式:Jpeg  (转换后文件格式,如:Jpeg,Png等)</param>
        /// </summary>
        public static List<string> PdfToPic(string filePath, string directoryPath, List<string> imageSaveNameList, ImageFormat image)
        {
            var imagePathList = new List<string>();
            var pdf = PdfDocument.Load(filePath);
            var pdfpage = pdf.PageCount;
            for (int i = 0; i < pdfpage; i++)
            {
                var outFilePath = directoryPath + "\\" + imageSaveNameList[i];
                if (string.IsNullOrWhiteSpace(Path.GetExtension(outFilePath)))
                {
                    outFilePath += "." + image.ToString();
                }
                RenderPage(pdf, i, outFilePath, image);
 
                imagePathList.Add(outFilePath);
            }
 
            pdf.Dispose();
 
            return imagePathList;
 
        }
 
        /// <summary>
        /// 渲染图片
        /// </summary>
        /// <param name="document"></param>
        /// <param name="pageNumber"></param>
        /// <param name="size"></param>
        /// <param name="outputPath"></param>
        /// <param name="mat"></param>
        /// <param name="dpi"></param>
        private static void RenderPage(PdfDocument document, int pageNumber, string outputPath, ImageFormat mat, int dpi = 300)
        {
            using (var stream = new FileStream(outputPath, FileMode.Create))
            using (var image = GetPageImage(pageNumber, document, dpi))
                image.Save(stream, mat);
        }
 
        /// <summary>
        /// 根据页数转换图片
        /// </summary>
        /// <param name="pageNumber"></param>
        /// <param name="size"></param>
        /// <param name="document"></param>
        /// <param name="dpi"></param>
        /// <returns></returns>
        private static System.Drawing.Image GetPageImage(int pageNumber, PdfDocument document, int dpi)
        {
            return document.Render(pageNumber, dpi, dpi, PdfRenderFlags.CorrectFromDpi);
        }
    }
}

  

posted @   元点  阅读(333)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示