C# PDF下载地址转图片(Base64 编码)

打印 上一主题 下一主题

主题 1015|帖子 1015|积分 3045

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实现思路:
步骤一、根据PDF地址下载pdf文件生存为临时文件,得到pdf文件的byte[]数组
  1. /// 从指定的 URL 下载 PDF 文件
  2.         public  byte[] DownloadPdf(string url)
  3.         {
  4.             try
  5.             {
  6.                 using (WebClient client = new WebClient())
  7.                 {
  8.                     return client.DownloadData(url);
  9.                 }
  10.             }
  11.             catch (Exception ex)
  12.             {
  13.                 Console.WriteLine($"下载PDF异常: {ex.Message}");
  14.                 return null;
  15.             }
  16.         }
复制代码
步骤二、初始化pdfDocument类,并加载PDF文档,遍历pdf文件,一页生成一个jpg图片,并生存图片
  1. string url = infoEntity.ReportUrl; //pdf地址
  2. byte[] pdfBytes = DownloadPdf(url);
  3. string tempPdfPath = Path.GetTempFileName();
  4. File.WriteAllBytes(tempPdfPath, pdfBytes);
  5. // 初始化一个PdfDocument类实例,并加载PDF文档
  6. PdfDocument doc = new PdfDocument();
  7. doc.LoadFromFile(tempPdfPath);
  8. // 遍历PDF每一页
  9. for (int i = 0; i < doc.Pages.Count; i++)
  10. {
  11.     Report_Pic report_Pic = new Report_Pic();
  12.   // 将PDF页转换成Bitmap图形
  13.    System.Drawing.Image bmp = doc.SaveAsImage(i);
  14.    string imgPath = Application.StartupPath;
  15.    // 将Bitmap图形保存为jpg格式的图片
  16.    string pngPath = $"{imgPath}\\img\\{infoEntity.ReportFileName.Replace(".pdf","")}_page_{i}.jpg";
  17.    if (File.Exists(pngPath))
  18.    {
  19.      try
  20.      {
  21.        File.Delete(pngPath);
  22.      }
  23.      catch (Exception ex)
  24.      {
  25.        Log.error($"删除图片时出错: {ex.Message}");
  26.      }
  27.    }
  28. bmp.Save(pngPath, System.Drawing.Imaging.ImageFormat.Jpeg);
  29. Log.info("PDF地址:"+tempPdfPath+"    图片地址:" + pngPath);
  30. string imageBase64Str= ConvertImageToBase64(bmp); //图片内容[Base64编码]
  31. Log.info("图片Base64编码:"+imageBase64Str);
  32. //删除图片
  33. File.Delete(pngPath);
  34. }
  35. // 删除临时文件
  36. File.Delete(tempPdfPath);
复制代码
步骤三、将每张图片转换成Base64编码
  1. // 将图片转换为 Base64 编码
  2.         static string ConvertImageToBase64(Image image)
  3.         {
  4.             using (MemoryStream ms = new MemoryStream())
  5.             {
  6.                 image.Save(ms, ImageFormat.Jpeg);
  7.                 byte[] imageBytes = ms.ToArray();
  8.                 return Convert.ToBase64String(imageBytes);
  9.             }
  10.         }
复制代码

备注:
目标框架:.Net Framework 4
引用库
  1. using System.Net;
  2. using System.Drawing;  //版本  4.0.0.0
  3. using System.Drawing.Imaging;
  4. using Spire.Pdf;   //版本8.6.1.0
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表