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

JAVA将PDF转图片

前言

当今时代,PDF 文件已经成为了常用的文档格式。然而,在某些情况下,我们可能需要将 PDF 文件转换为图片格式,以便更方便地分享和使用。这时,我们可以使用 Java 编程语言来实现这个功能。Java 提供了许多库和工具,可以帮助我们将 PDF 文件转换为图片格式并进行后续处理。


框架用的若依框架

引入依赖

<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.24</version>
</dependency>

转换方法

/*** PDF转图片* @param inputStream:文件输入流* @return*/public static List<String> pdfToImageBuInput(InputStream inputStream){List<String> imageList = new ArrayList<>();PDDocument document = null;try {// 加载PDF文档document = PDDocument.load(inputStream);// 创建PDFRenderer对象PDFRenderer renderer = new PDFRenderer(document);List<BufferedImage> images = new ArrayList<>();for (int i = 0; i < document.getNumberOfPages(); i++) {/*** 《 72 》 此处设置得越大像素越高,生成得时候也会越久* DPI 的设置一般根据具体的需求和使用场景来决定。DPI 越高,生成的图片分辨率越大,图像质量也越高,* 但同时文件大小也会变得更大。通常情况下,如果需要对生成的图片进行放大、裁剪等操作,建议将 DPI 设置得较高,* 以保证图像质量和细节的清晰度;如果只是需要简单地浏览或共享图片,可以适当降低 DPI 以减小文件大小。在实际开发中,* 可以根据不同的应用场景进行调整。一般来说,72 DPI 是一个比较常见的默认值,可以作为参考。*/BufferedImage image = renderer.renderImageWithDPI(i, 72, ImageType.RGB);images.add(image);}for (int i = 0; i < images.size(); i++) {String name =  System.currentTimeMillis() + i + 1 + ".png"; // 时间戳生成名称并+1String imagesPath = RuoYiConfig.getProfileImages() + "/" + name;// 保存图片到文件ImageIO.write(images.get(i), "PNG", new File(imagesPath));String webPath = FileUploadUtils.getPathFileName(RuoYiConfig.getProfileImages(), name);imageList.add(webPath);}return imageList;} catch (Exception e) {e.printStackTrace();return null;} finally {// 关闭文档try {if (document != null) {document.close();}if (inputStream != null) {inputStream.close();}} catch (IOException e) {e.printStackTrace();}}}

测试方法

@PostMapping("/uploadNews")
public AjaxResult uploadNews(MultipartFile file){try{//返回文件路径地址结果集List<String> list = PdfToImageUtils.pdfToImageBuInput(file.getInputStream());AjaxResult ajax = AjaxResult.success();ajax.put("list", list);//上传文件名称return ajax;}catch (Exception e){e.printStackTrace();return AjaxResult.error(e.getMessage());}}

测试请求

返回结果为图片路径
在这里插入图片描述

PDF内容如下

PDF内容一共两页,会将这两页转换成图片显示
在这里插入图片描述

最终结果

在这里插入图片描述


http://www.lryc.cn/news/246882.html

相关文章:

  • 合并区间[中等]
  • MYSQL基础知识之【LIKE子句的使用 ,NULL值的处理,空值的处理】
  • 线索二叉树:C++实现
  • C++——vector互换容器与预留空间
  • Unity 自带的一些可以操控时间的属性或方法。
  • vue 项目中使用 mqtt
  • linux shell操作 - 05 进程 与 IO 模型
  • 让SOME/IP运转起来——SOME/IP系统设计(下)之数据库开发
  • Mybatis反射工厂类DefaultReflectorFactory
  • antDesignPro a-table样式二次封装
  • 找免费4K高清图片素材,就上这6个网站
  • 代码随想录算法训练营第35天| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
  • 成为AI产品经理——TPR、FPR、ROC、AUC
  • java: Internal error in the mapping processor: java.lang.NullPointerException
  • TCP知识点
  • 大语言模型(LLMs)在 Amazon SageMaker 上的动手实践(一)
  • 顶级数据恢复工具—— 最全的15个数据恢复软件榜单
  • 【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解
  • Ubuntu 22.03 LTS 安装deepin-terminal 实现 终端 分屏
  • HTTP协议,Web框架回顾
  • el-checkbox 对勾颜色调整
  • 系统管理精要:深度探索 Linux 监控与管理利器
  • vue3之echarts渐变柱状图
  • 有一种浪漫,叫接触Linux
  • 构建 App 的方法
  • laravel实现发送邮件功能
  • 概要设计检查单、需求规格说明检查单
  • 达梦列式存储和clickhouse基准测试
  • 【Web】NewStarCtf Week2 个人复现
  • Python实现Windows服务自启动、禁用、启动、停止、删除