C#-PDF转图片
1.引用:Aspose.PDF,版本:11.1.1.0
1 /// <summary> 2 /// Pdf转图片 3 /// </summary> 4 /// <param name="sourcePath"> PDF 文件路径 </param> 5 /// <param name="imageSavePath">图片保存的路径 </param> 6 /// <returns></returns> 7 public bool PdfToPic(string sourcePath, string imageSavePath) 8 { 9 try 10 { 11 new Aspose.Pdf.License().SetLicense(new MemoryStream(Convert.FromBase64String(AppConfig.AsposeKey))); 12 13 if (!File.Exists(sourcePath)) return false; 14 15 Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(sourcePath); 16 17 for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++) 18 { 19 // 为每一页生成一个唯一的文件名 20 string pageSavePath = Path.Combine(Path.GetDirectoryName(imageSavePath), $"page_{pageCount}.jpg"); 21 22 //判断目录 23 string directory = Path.GetDirectoryName(imageSavePath); 24 if (!Directory.Exists(directory)) 25 Directory.CreateDirectory(directory); 26 27 // 使用 'using' 自动管理资源 28 using (FileStream imageStream = new FileStream(pageSavePath, FileMode.Create)) 29 { 30 // 创建分辨率对象 31 Resolution resolution = new Resolution(300); 32 JpegDevice jpegDevice = new JpegDevice(resolution, 100); 33 34 var pdfFile = pdfDocument.Pages[pageCount]; 35 36 // 转换特定页面并将图像保存到流中 37 jpegDevice.Process(pdfFile, imageStream); 38 } 39 } 40 } 41 catch (Exception ex) 42 { 43 // 记录错误信息 44 Console.WriteLine($"Error: {ex.Message}"); 45 return false; 46 } 47 return true; 48 }
1 /// <summary> 2 /// 全局静态配置 3 /// </summary> 4 public class AppConfig 5 { 6 /// <summary> 7 /// Key值 8 /// </summary> 9 public const string AsposeKey = @"PExpY2Vuc2U+DQogIDxEYXRhPg0KICAgIDxMaWNlbnNlZFRvPkFzcG9zZSBTY290bGFuZCB 10 UZWFtPC9MaWNlbnNlZFRvPg0KICAgIDxFbWFpbFRvPmJpbGx5Lmx1bmRpZUBhc3Bvc2UuY2 11 9tPC9FbWFpbFRvPg0KICAgIDxMaWNlbnNlVHlwZT5EZXZlbG9wZXIgT0VNPC9MaWNlbnNlV 12 HlwZT4NCiAgICA8TGljZW5zZU5vdGU+TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1p 13 dGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU+DQogICAgPE9yZGVySUQ+MTQ 14 wNDA4MDUyMzI0PC9PcmRlcklEPg0KICAgIDxVc2VySUQ+OTQyMzY8L1VzZXJJRD4NCiAgIC 15 A8T0VNPlRoaXMgaXMgYSByZWRpc3RyaWJ1dGFibGUgbGljZW5zZTwvT0VNPg0KICAgIDxQc 16 m9kdWN0cz4NCiAgICAgIDxQcm9kdWN0PkFzcG9zZS5Ub3RhbCBmb3IgLk5FVDwvUHJvZHVj 17 dD4NCiAgICA8L1Byb2R1Y3RzPg0KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl 18 0aW9uVHlwZT4NCiAgICA8U2VyaWFsTnVtYmVyPjlhNTk1NDdjLTQxZjAtNDI4Yi1iYTcyLT 19 djNDM2OGYxNTFkNzwvU2VyaWFsTnVtYmVyPg0KICAgIDxTdWJzY3JpcHRpb25FeHBpcnk+M 20 jAxNTEyMzE8L1N1YnNjcmlwdGlvbkV4cGlyeT4NCiAgICA8TGljZW5zZVZlcnNpb24+My4w 21 PC9MaWNlbnNlVmVyc2lvbj4NCiAgICA8TGljZW5zZUluc3RydWN0aW9ucz5odHRwOi8vd3d 22 3LmFzcG9zZS5jb20vY29ycG9yYXRlL3B1cmNoYXNlL2xpY2Vuc2UtaW5zdHJ1Y3Rpb25zLm 23 FzcHg8L0xpY2Vuc2VJbnN0cnVjdGlvbnM+DQogIDwvRGF0YT4NCiAgPFNpZ25hdHVyZT5GT 24 zNQSHNibGdEdDhGNTlzTVQxbDFhbXlpOXFrMlY2RThkUWtJUDdMZFRKU3hEaWJORUZ1MXpP 25 aW5RYnFGZkt2L3J1dHR2Y3hvUk9rYzF0VWUwRHRPNmNQMVpmNkowVmVtZ1NZOGkvTFpFQ1R 26 Hc3pScUpWUVJaME1vVm5CaHVQQUprNWVsaTdmaFZjRjhoV2QzRTRYUTNMemZtSkN1YWoyTk 27 V0ZVJpNUhyZmc9PC9TaWduYXR1cmU+DQo8L0xpY2Vuc2U+"; 28 }