当前位置: 首页 > 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内容一共两页,会将这两页转换成图片显示
在这里插入图片描述

最终结果

在这里插入图片描述


相关文章:

JAVA将PDF转图片

前言 当今时代&#xff0c;PDF 文件已经成为了常用的文档格式。然而&#xff0c;在某些情况下&#xff0c;我们可能需要将 PDF 文件转换为图片格式&#xff0c;以便更方便地分享和使用。这时&#xff0c;我们可以使用 Java 编程语言来实现这个功能。Java 提供了许多库和工具&a…...

合并区间[中等]

一、题目 以数组intervals表示若干个区间的集合&#xff0c;其中单个区间为intervals[i] [starti, endi]。请你合并所有重叠的区间&#xff0c;并返回一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间。 示例 1&#xff1a; 输入&#xff1a;intervals […...

MYSQL基础知识之【LIKE子句的使用 ,NULL值的处理,空值的处理】

文章目录 前言MySQL LIKE 子句在PHP脚本中使用 LIKE 子句 MySQL NULL 值处理在命令提示符中使用 NULL 值使用PHP脚本处理 NULL 值 后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Mysql &#x1f431;‍&#x1f453;博主在前端领域还有…...

线索二叉树:C++实现

引言&#xff1a; 线索二叉树是一种特殊的二叉树&#xff0c;它可以通过线索&#xff08;线索是指在二叉树中将空指针改为指向前驱或后继的指针&#xff09;的方式将二叉树转化为一个线性结构&#xff0c;从而方便对二叉树进行遍历。本文将介绍如何使用C实现线索二叉树。 技术…...

C++——vector互换容器与预留空间

一.vector互换容器 功能描述:实现两个容器内元进行互换 函数原型: swap(vec); //将vec与本身的元素互换 实例: //1.基本使用 void test01() {vector<int>v1;for (int i 0; i < 10; i){v1.push_back(i);}cout << "交换前:" << e…...

Unity 自带的一些可以操控时间的属性或方法。

今天来总结下Unity自带的一些可以操控时间的方法。 1、Time.time。比较常用计算运行时间而触发特定事件。 public class Controller : MonoBehaviour {public float eventTime 5f; // 触发事件的时间private float startTime; // 游戏开始的时间private void Start(){startT…...

vue 项目中使用 mqtt

1、在html 中用cdn方式引入 <script src"https://unpkg.com/mqtt/dist/mqtt.min.js"></script> 2、封装代码 mqtt_connect.js // import * as mqtt from mqtt/dist/mqtt.min // 不知道为什么 我用引入的方式不成&#xff0c;就在html 用的cdn方式接入了…...

linux shell操作 - 05 进程 与 IO 模型

文章目录 计算机内存分配进程与子进程流IO模型非阻塞IOIO多路复用网络IO模型简单的socket并发的socket 计算机内存分配 一个32位&#xff0c;4G内存的计算机&#xff0c;内存使用分为两部分&#xff1a; 操作系统内核空间&#xff1b;应用程序的用户空间使用的操作系统不同&a…...

让SOME/IP运转起来——SOME/IP系统设计(下)之数据库开发

上一篇我们介绍了SOME/IP矩阵的设计流程&#xff0c;这一篇重点介绍如何把SOME/IP矩阵顺利的交给下游软件团队进行开发。 车载以太网通信矩阵开发完成后&#xff0c;下一步应该做什么&#xff1f; 当我们完成SOME/IP矩阵开发&#xff0c;下一步需要把开发完成的矩阵换成固定格…...

Mybatis反射工厂类DefaultReflectorFactory

DefaultReflectorFactory是反射工厂接口ReflectorFactory的默认实现&#xff0c;其主要是实现了对反射对象Reflector的创建和缓存。 有三个方法&#xff1a; // 判断是否开启缓存boolean isClassCacheEnabled();// 设置是否缓存void setClassCacheEnabled(boolean classCacheEn…...

antDesignPro a-table样式二次封装

antDesignPro是跟element-ui类似的一个样式框架&#xff0c;其本身就是一个完整的后台系统&#xff0c;风格样式都很统一。我使用的是antd pro vue&#xff0c;版本是1.7.8。公司要求使用这个框架&#xff0c;但是UI又有自己的一套设计。这就导致我需要对部分组件进行一定的个性…...

找免费4K高清图片素材,就上这6个网站

使用图片素材怕侵权&#xff1f;那就上这6个网站&#xff0c;免费下载&#xff0c;4K高清无水印&#xff0c;赶紧收藏起来~ 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYxMjky 一个很大的素材库&#xff0c;站内主要还是以设计素材为主&#xff0c;像图片素材就有上百…...

代码随想录算法训练营第35天| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

JAVA代码编写 860.柠檬水找零 在柠檬水摊上&#xff0c;每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品&#xff0c;&#xff08;按账单 bills 支付的顺序&#xff09;一次购买一杯。 每位顾客只买一杯柠檬水&#xff0c;然后向你付 5 美元、10 美元或 20 美元。你必须…...

成为AI产品经理——TPR、FPR、ROC、AUC

目录 一、PR图、BEP 1.PR图 2.BEP 二、灵敏度、特异度 1.灵敏度 2.特异度 三、真正率、假正率 1.真正率 2.假正率 三、ROC、AUC 1.ROC 2.AUC 四、KS值 一、PR图、BEP 1.PR图 二分类问题模型通常输出的是一个概率值&#xff0c;我们需要设定一个阈值&#xff…...

java: Internal error in the mapping processor: java.lang.NullPointerException

启动java项目出错&#xff0c;其他人工程没有问题&#xff0c;别着急。 java: Internal error in the mapping processor: java.lang.NullPointerException at org.mapstruct.ap.internal.processor.DefaultVersionInformation.createManifestUrl(DefaultVersionInformation.j…...

TCP知识点

TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层协议&#xff0c;广泛应用于互联网。下面是TCP的一些知识点&#xff1a; TCP是一种可靠的协议&#xff0c;采用三次握手建立连接和四次挥手断开…...

大语言模型(LLMs)在 Amazon SageMaker 上的动手实践(一)

本期文章&#xff0c;我们将通过三个动手实验从浅到深地解读和演示大语言模型&#xff08;LLMs&#xff09;&#xff0c;如何结合 Amazon SageMaker 的模型部署、模型编译优化、模型分布式训练等。 实验一&#xff1a;使用 Amazon SageMaker 构建基于开源 GPT-J 模型的对话机器…...

顶级数据恢复工具—— 最全的15个数据恢复软件榜单

在这个信息为王的数字时代&#xff0c;关键数据的丢失对个人和企业来说都可能是灾难性的。无论是由于意外删除、硬件故障还是恶意攻击&#xff0c;拥有强大的数据恢复解决方案都是至关重要的。在本综合指南中&#xff0c;我们将探索市场上最好的数据恢复软件&#xff0c;包括顶…...

【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解

【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解前言Inception-ResNet讲解Inception-ResNet-V1Inception-ResNet-V2残差模块的缩放(Scaling of the Residuals)Inception-…...

Ubuntu 22.03 LTS 安装deepin-terminal 实现 终端 分屏

deepin-terminal 安装 源里面自带了这个软件&#xff0c;可以直接装 sudo apt install deepin-terminal 启动 按下Win键&#xff0c;输入deep即可快速检索出图标&#xff0c;点击启动 效果 分屏 CtrlShiftH 水平分割 CtrlShiftJ 垂直分割 最多分割成四个小窗口&#xff0…...

Jenkins 学习总结几

先唠两句&#xff1a;参数就像餐厅点单 把API想象成一家餐厅的“后厨系统”。 ? 路径参数/dishes/{dish_id} -> 好比你要点“宫保鸡丁”这道具体的菜&#xff0c;它是菜单&#xff08;资源路径&#xff09;的一部分。查询参数/dishes?spicytrue&typeSichuan -> 好比…...

LabelBee智能标注引擎:多模态数据标注的完整解决方案

LabelBee智能标注引擎&#xff1a;多模态数据标注的完整解决方案 【免费下载链接】labelbee LabelBee is an annotation Library 项目地址: https://gitcode.com/gh_mirrors/la/labelbee LabelBee是一个功能强大的开源数据标注工具库&#xff0c;专为机器学习项目提供高…...

Pixel Dream Workshop 命令行高手之路:OpenClaw常用命令与脚本编写

Pixel Dream Workshop 命令行高手之路&#xff1a;OpenClaw常用命令与脚本编写 1. 开篇&#xff1a;为什么需要命令行工具 如果你已经用了一段时间Pixel Dream Workshop的图形界面&#xff0c;可能会发现有些操作重复性太高&#xff0c;或者想在服务器上实现自动化管理。这时…...

告别Cartographer重定位慢:3个优化技巧与子图筛选源码解析

Cartographer重定位性能优化实战&#xff1a;从源码解析到参数调优全指南 在机器人定位与建图领域&#xff0c;Cartographer凭借其出色的SLAM算法表现成为工业界和学术界的宠儿。但当场景切换到重定位场景时&#xff0c;许多开发者都会遇到一个共同的痛点——匹配速度慢得令人抓…...

MAA明日方舟助手:3个步骤告别重复性游戏操作,实现全自动智能管理

MAA明日方舟助手&#xff1a;3个步骤告别重复性游戏操作&#xff0c;实现全自动智能管理 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. …...

Qwen3-4B实战:Streamlit缓存让AI应用支持多人同时聊天

Qwen3-4B实战&#xff1a;Streamlit缓存让AI应用支持多人同时聊天 1. 问题背景与挑战 当你在本地部署了一个基于Qwen3-4B的AI聊天应用&#xff0c;自己测试时一切运行良好。但当你兴奋地分享给同事或朋友使用时&#xff0c;突然发现&#xff1a; 第二个用户打开页面时&#…...

QClaw驱动与技能插件安装,联动环境搭建的底层心法与实操指南

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

从三相到两相:坐标变换在感应电机建模中的核心作用与实践

1. 为什么我们需要坐标变换&#xff1f; 想象一下你第一次拆开一台三相感应电机时的场景。眼前密密麻麻的线圈缠绕在定子上&#xff0c;三个相位彼此交错120度排列。这种物理结构虽然高效&#xff0c;但带来的数学模型却让人头疼——三相变量相互耦合&#xff0c;方程复杂得像一…...

保姆级教程:用Docker一键部署YOLOv10 TensorRT模型到Jetson Orin Nano(支持USB摄像头)

极速部署YOLOv10 TensorRT模型到Jetson Orin Nano的完整实践指南 在边缘计算设备上实现高效的目标检测一直是AI开发者关注的焦点。Jetson Orin Nano作为NVIDIA推出的高性能边缘计算平台&#xff0c;配合YOLOv10这一最新目标检测模型&#xff0c;能够为各类实时视觉应用提供强大…...

winpeas使用教程

winpeas是PEASS&#xff08;Privilege Escalation Awesome Scripts SUITE&#xff0c;权限提升优秀脚本套件&#xff09;中的Windows平台专用模块&#xff0c;全称为Windows Privilege Escalation Awesome Script。它是一款专为Windows系统设计的自动化权限提升扫描工具&#x…...