.Net Core环境下将PDF文件转换为 jpg

一、使用PdfiumViewer

1、Nuget 下载包

 

 2、

 1         /// <summary>
 2         /// PDF转JPG
 3         /// </summary>
 4         /// <param name="inFilePath">输入物理路径(E:\\pdf\\test.pdf)</param>
 5         /// <param name="outFilePath">输出物理路径(E:\\img\\test.jpg)</param>
 6         public static void PDFConvertToJPG(string inFilePath, string outFilePath)
 7         {
 8             using (var document = PdfDocument.Load(inFilePath))
 9             {
10                 var pageCount = document.PageCount;
11                 for (int i = 0; i < pageCount; i++)
12                 {
13                     var dpi = 300;
14                     using (var image = document.Render(0, dpi, dpi, PdfRenderFlags.CorrectFromDpi))
15                     {
16                         var encoder = ImageCodecInfo.GetImageEncoders()
17                             .First(c => c.FormatID == ImageFormat.Jpeg.Guid);
18                         var encParams = new EncoderParameters(1);
19                         encParams.Param[0] = new EncoderParameter(
20                             System.Drawing.Imaging.Encoder.Quality, 10L);
21 
22                         image.Save(outFilePath, encoder, encParams);
23                     }
24                 }
25             }
26         }

 

二、使用FreeSpire.PDF

1、Nuget 下载包

 

 2、附上调用代码

 1 public static void PDFConvertToJPG(string? pdfFullPath, string? jpgFilePath, string jpgFileName)
 2         {
 3             if (string.IsNullOrWhiteSpace(pdfFullPath))
 4                 throw new ArgumentNullException(pdfFullPath);
 5             if (string.IsNullOrWhiteSpace(jpgFilePath))
 6                 throw new ArgumentNullException(jpgFilePath);
 7 
 8             if (!File.Exists(pdfFullPath))
 9                 throw new FileNotFoundException(pdfFullPath);
10             var doc = new PdfDocument();
11             doc.LoadFromFile(pdfFullPath);
12             var pageCount = doc.Pages.Count;
13             for (int i = 0; i < pageCount; i++)
14             {
15                 string jpgFullName = string.Empty;
16                 if (i == 0)
17                     jpgFullName = Path.Combine(jpgFilePath, jpgFileName + ".jpg");
18                 else
19                     jpgFullName = Path.Combine(jpgFilePath, jpgFileName + $"_{i}" + ".jpg");
20                 using var stream = File.Open(jpgFullName, FileMode.Create);
21                 using Image bmp = doc.SaveAsImage(i, Spire.Pdf.Graphics.PdfImageType.Bitmap, 360, 360);
22                 bmp.Save(stream, ImageFormat.Jpeg);
23             }
24         }

 

三、优缺点:

1、PdfiumViewer没有什么使用限制,但是转化出的图片打印出来之后会有一点黑色的背景(不知道是不是我使用这个组件的方式方法有问题)

2、FreeSpire.PDF 有使用限制,免费版有 10 页的页数限制,在创建和加载 PDF 文档时要求文档不超过 10 页。将 PDF 文档转换为图片时,仅支持转换前 3 页。转换出来的图片打印出来倒是没有问题,白底的。

posted @ 2022-08-05 15:29  进击的黑大帅  阅读(2324)  评论(0编辑  收藏  举报