当前位置: 首页 > article >正文

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

实现思路:

步骤一、根据PDF地址下载pdf文件保存为临时文件,获得pdf文件的byte[]数组

/// 从指定的 URL 下载 PDF 文件
        public  byte[] DownloadPdf(string url)
        {
            try
            {
                using (WebClient client = new WebClient())
                {
                    return client.DownloadData(url);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"下载PDF异常: {ex.Message}");
                return null;
            }
        }

步骤二、初始化pdfDocument类,并加载PDF文档,遍历pdf文件,一页生成一个jpg图片,并保存图片

 string url = infoEntity.ReportUrl; //pdf地址
 byte[] pdfBytes = DownloadPdf(url);
 string tempPdfPath = Path.GetTempFileName();
 File.WriteAllBytes(tempPdfPath, pdfBytes);
 // 初始化一个PdfDocument类实例,并加载PDF文档
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(tempPdfPath);
// 遍历PDF每一页
 for (int i = 0; i < doc.Pages.Count; i++)
 {
    Report_Pic report_Pic = new Report_Pic();
  // 将PDF页转换成Bitmap图形
   System.Drawing.Image bmp = doc.SaveAsImage(i);
   string imgPath = Application.StartupPath;
   // 将Bitmap图形保存为jpg格式的图片 
   string pngPath = $"{imgPath}\\img\\{infoEntity.ReportFileName.Replace(".pdf","")}_page_{i}.jpg";

   if (File.Exists(pngPath))
   {
     try
     {
       File.Delete(pngPath);
     }
     catch (Exception ex)
     {
       Log.error($"删除图片时出错: {ex.Message}");
     }
   }
 bmp.Save(pngPath, System.Drawing.Imaging.ImageFormat.Jpeg);
 Log.info("PDF地址:"+tempPdfPath+"    图片地址:" + pngPath);
 
string imageBase64Str= ConvertImageToBase64(bmp); //图片内容[Base64编码]
Log.info("图片Base64编码:"+imageBase64Str);
 
//删除图片
File.Delete(pngPath);
}
// 删除临时文件
File.Delete(tempPdfPath);

步骤三、将每张图片转换成Base64编码

 // 将图片转换为 Base64 编码
        static string ConvertImageToBase64(Image image)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                image.Save(ms, ImageFormat.Jpeg);
                byte[] imageBytes = ms.ToArray();
                return Convert.ToBase64String(imageBytes);
            }
        }

备注:

目标框架:.Net Framework 4

引用库

using System.Net;
using System.Drawing;  //版本  4.0.0.0
using System.Drawing.Imaging;
using Spire.Pdf;   //版本8.6.1.0


http://www.kler.cn/a/505113.html

相关文章:

  • 编译pytorch——cuda-toolkit-nvcc
  • Java面试总结(1)
  • HTML实战课堂之启动动画弹窗
  • JVM之垃圾回收器ZGC概述以及垃圾回收器总结的详细解析
  • 高级运维:shell练习2
  • Unity shader中真的可以动态关闭Stencil Test吗?
  • Ubuntu/centOS 如何安装 OpenGL
  • Web前端------HTML多媒体标签之图片标签
  • 开始使用Panuon开源界面库环境配置并手写VS2019高仿界面
  • 网安——计算机网络基础
  • 【HTML+CSS+JS+VUE】web前端教程-35-字体图标
  • 【AI】【RAG】如何通过WebUI部署与优化RAG问答系统
  • 深度探索:Go 语言日志增强工具 Devslog 的全面解析
  • 配置Kubernetes从节点与集群Calico网络
  • Java算法 数据结构 栈 单调栈实战 模版题 [洛谷-P5788]
  • WOA-CNN-LSTM-Attention、CNN-LSTM-Attention、WOA-CNN-LSTM、CNN-LSTM四模型对比多变量时序预测
  • Android 播放SMB共享视频
  • ImageSharp图形库学习
  • Docker 部署 Typecho
  • 期权懂|场内期权合约行权价格是如何设定制度的?
  • java进行pdf文件压缩
  • 03.选择排序
  • qml XmlListModel详解
  • SDK调用文心一言如何接入,文心一言API接入教程
  • 检验统计量与p值笔记
  • LabVIEW智能水肥一体灌溉控制系统