.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 页。转换出来的图片打印出来倒是没有问题,白底的。