Word、PDF转换为图片Java
Word、PDF转换为图片Java
需求要在小程序端展示文档内容,所以将文档每页转换为图片后显示
参考和其他等方案:
https://blog.csdn.net/strggle_bin/article/details/140599514
https://www.modb.pro/db/566986
https://blog.csdn.net/spring_is_coming/article/details/136969669
Word转换为图片
<!-- word转图工具 -->
<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.8.0</version>
</dependency>
<dependency><groupId>com.luhuiguo</groupId><artifactId>aspose-words</artifactId><version>23.1</version>
</dependency>
import com.aspose.words.Document;
import com.aspose.words.SaveFormat;
import lombok.extern.slf4j.Slf4j;import java.io.File;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;@Slf4j
public class WordToImageUtil {public static void main(String[] args) {wordToImage("C:\\Users\\Administrator\\Documents\\录入脚本\\324\\", "xxxx.doc");}public static List<String> wordToImage(String filePath, String fileName) {log.info("开始word转换为图片");List<String> resultList = new ArrayList<String>();// 获取文件路径分隔符String separator = File.separator;try {// 填充数据完毕的test.docx,在转换成图片File file1 = new File(filePath + separator + fileName); // 使用系统的路径分隔符// 打开生成的 Word 文件Document doc = new Document(Files.newInputStream(file1.toPath()));// 逐页将 Word 文件保存为图片(PNG格式)for (int i = 0; i < doc.getPageCount(); i++) {Document extractedPage = doc.extractPages(i, 1);// 拼接上文件名String path = filePath + separator + "tmpImg" + separator + removeFileExtension(fileName) + separator +"img" + System.currentTimeMillis() + "_" + i + ".png"; // 使用系统的路径分隔符// 创建目录(如果不存在的话)File tmpDir = new File(filePath + separator + "tmpImg" + separator + removeFileExtension(fileName));if (!tmpDir.exists()) {tmpDir.mkdirs(); // 创建目录}// 将 Word 文件保存为图片PNG格式extractedPage.save(path, SaveFormat.PNG);resultList.add(path);}} catch (Exception e) {e.printStackTrace();return new ArrayList<>();}log.info("结束word转换为图片");return resultList;}/*** 去掉后缀名* @param fileName* @return*/public static String removeFileExtension(String fileName) {int dotIndex = fileName.lastIndexOf(".");if (dotIndex == -1) {return fileName; // 如果没有找到点,则返回原始文件名}return fileName.substring(0, dotIndex); // 返回去掉后缀名的文件名}
}
PDF转换为图片
<!--PDF转换为图片-->
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version>
</dependency>
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PdfToImage {/*** 使用pdfbox将整个pdf转换成图片** @param fileAddress 文件地址 如:C:\\Users\\user\\Desktop\\test* @param filename PDF文件名不带后缀名* @param type 图片类型 png 和jpg*/public static void pdf2png(String fileAddress, String filename, String type) {long startTime = System.currentTimeMillis();// 将文件地址和文件名拼接成路径 注意:线上环境不能使用\\拼接File file = new File(fileAddress + "\\" + filename + ".pdf");try {// 写入文件PDDocument doc = PDDocument.load(file);PDFRenderer renderer = new PDFRenderer(doc);int pageCount = doc.getNumberOfPages();for (int i = 0; i < pageCount; i++) {// dpi为144,越高越清晰,转换越慢BufferedImage image = renderer.renderImageWithDPI(i, 144); // Windows native DPI// 将图片写出到该路径下ImageIO.write(image, type, new File(fileAddress + "\\" + filename + "_" + (i + 1) + "." + type));}long endTime = System.currentTimeMillis();System.out.println("共耗时:" + ((endTime - startTime) / 1000.0) + "秒"); //转化用时} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {pdf2png("C:\\Users\\Administrator\\Documents\\xxx\\pdf", "文件名", "png");}
}
乱码问题
如果在linux运行遇到中文乱码,可尝试安装字体然后重启程序运行
参考:https://blog.csdn.net/lljddddd/article/details/137958297
1、从本地找到字体:C:\Windows\Fonts
2、复制到Linux,我这里用的centos,复制字体到 /usr/share/fonts
3、安装fontconfig工具 yum -y install fontconfig
4、刷新字体缓存 fc-cache
5、查看字体列表是否完成安装 fc-list
相关文章:
Word、PDF转换为图片Java
Word、PDF转换为图片Java 需求要在小程序端展示文档内容,所以将文档每页转换为图片后显示 参考和其他等方案: https://blog.csdn.net/strggle_bin/article/details/140599514 https://www.modb.pro/db/566986 https://blog.csdn.net/spring_is_comin…...
iOS IPA上传到App Store Connect的三种方案详解
引言 在iOS应用开发中,完成开发后的重要一步就是将IPA文件上传到App Store Connect以便进行测试或发布到App Store。无论是使用Xcode进行原生开发,还是通过uni-app、Flutter等跨平台工具生成的IPA文件,上传到App Store的流程都是类似的。苹果…...
Java中的Arrays类
java.util.Arrays是一个非常实用的类,提供了许多静态方法来操作数组,如排序、查找、复制和填充等。 1. toString - 将数组转换为字符串 // 导入java.util.Arrays类 import java.util.Arrays;public class ArraysExample {public static void main(Stri…...
GUI编程
GUI编程 【Java从0到架构师课程】笔记 GUI简介 GUI:图形用户界面,在计算机中采用图形的方式显示用户界面 java的GUI开发 AWT:java最早推出的GUI编程开发包,界面风格跟随操作系统SWT:eclipse就是java使用SWT开发的Sw…...
(multi)map和set--C++
文章目录 一、序列式容器和关联式容器二、set系列的使用1、set和multiset参考文档2、set类的介绍3、set的构造和迭代器4、set的增删查5、insert和迭代器遍历使用样例:6、find和erase使用样例:7、multiset和set的差异 三、map系列的使用1、map和multimap参…...
jmeter响应断言放进csv文件遇到的问题
用Jmeter的json 断言去测试http请求响应结果,发现遇到中文时出现乱码,导致无法正常进行响应断言,很影响工作。于是,察看了其他测试人员的解决方案,发现是jmeter本身对编码格式的设置导致了这一问题。解决方案是在jmete…...
复旦大学全球供应链研究中心揭牌,合合信息共话大数据赋能
10月13日,复旦大学全球供应链研究中心(以下简称“中心”)揭牌仪式在复旦大学管理学院政立院区隆重举行。我国的供应链体系庞大复杂,在百年未有之大变局下,保障产业链供应链安全已成为我国的重要战略目标。中心的设立旨…...
达那福发布新品音致系列:以顶尖降噪技术,开启清晰聆听新篇章
近日,国际知名助听器品牌达那福推出其最新研发的音致系列助听器。该系列产品旨在通过顶尖的声音处理技术,直面助听器市场中普遍存在的挑战——如何在噪声环境中提供清晰的语音辨识。 根据助听器行业协会2022年的调查数据,高达86%的佩戴者认为…...
当物理学奖遇上机器学习:创新融合的里程碑
作为一名程序员,看到 2024 年诺贝尔物理学奖颁发给机器学习与神经网络领域研究者,心中满是感慨与思考。 从编程技术角度出发,这意味着传统编程理念与物理思维有了更紧密的结合。在以往的编程中,算法优化多侧重于数据结构和计算效率…...
模拟电路2
BJT双极性晶体管 1.1 BJT共射特性曲线 输入特性: iB f(uBE)|UceC 定量分析,确定只有一个变量 输出特性 放大区:发射结正偏,集电结反偏 截至区:双结反偏 CE断路 饱和区:双结正偏 UCEs0.3 CE类似于开关闭…...
大数据面试题整理——MapReduce
系列文章目录 第一章 HDFS面试题 第二章 MapReduce面试题 文章目录 系列文章目录一、请简要解释一下 MapReduce 的工作原理。二、什么是 map 函数和 reduce 函数?它们的作用分别是什么?三、如何处理数据倾斜问题在 MapReduce 中?四、在 MapR…...
【景观生态学实验】实验一 ArcGIS地理数据处理及制图基础
实验目的 1.掌握ArcGIS软件基本操作:通过实验操作与学习,熟练掌握ArcGIS软件相关的基本操作,包括界面熟悉、工具栏使用、数据的加载和保存、基本数据处理操作等; 2.掌握如何使用ArcGIS进行影像拼接及裁剪:通过实验操作与学习&am…...
今年双十一最值得入手的好物有哪些?双十一值得选购的好物盘点!
在这个全民狂欢的购物盛宴——双十一,每一个角落都弥漫着诱人的优惠与不可错过的精品。从科技潮品到生活必需品,从时尚尖货到家居好物,无数精选商品在这一季集中绽放,等待着慧眼识珠的你将它们带回家,今年的双十一&…...
【OpenCV】人脸识别方法
代码已上传GitHub:plumqm/OpenCV-Projects at master EigenFace、FisherFace、LBPHFace 这三种方法的代码区别不大所以就一段代码示例。 EigenFace与FisherFace 1. 将人脸图像展开为一维向量,组成训练数据集 2. PCA(EigenFace)或…...
xxl-job定时任务
学习中心 清理Redis中的历史榜单: 持久化榜单数据: 创建历史榜单表: 支付服务 待退款订单检查: 未支付订单检查: 交易服务 退款单处理: 促销中心 优惠券发放状态处理:...
C#从零开始学习(如何构建应用)(1)
开始使用 C# 本章所有的代码都放在 https://github.com/hikinazimi/head-first-Csharp 创建一个控制台应用 打开Visual Studio 2019 创建项目 选择控制台应用程序 创建后点击运行,就可以在控制台打印Hello World 构建一个游戏(创建WPF项目) 构建游戏的步骤 首先创建WPF项…...
OpenCV高级图形用户界面(7)获取指定窗口的属性值函数getWindowProperty()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 提供窗口的参数。 函数 getWindowProperty 返回窗口的属性。 cv::getWindowProperty() 函数用于获取指定窗口的属性值。这个函数允许你查询窗口…...
Java实现文件上传功能
目录 1、准备工作 2、注意事项 3、jsp页面代码 4、Servlet 5、注册Servlet 1、准备工作 导入依赖:commons-fileupload和commons-io 2、注意事项 ①为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如WEB-INF目录下 ②为…...
Leetcode|24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II
24. 注意:涉及头节点的修改或者删除时,最好设置一个虚拟的头结点,方便简化代码,不必进行是否为头节点的的判断,简化code class Solution { public:ListNode* swapPairs(ListNode* head) {ListNode* dummyHead new Li…...
OpenCV学习笔记5——图像的数值计算
目录 一、简单数值计算 二、opencv中提供函数进行计算 三、cv2.addWeighted 一、简单数值计算 在opencv中,我们有许多可以获取图像各类数值的办法,许多函数能获得各种方面的数据。但如果我们什么都不用,仅仅对图像上每一个点做加法运算会…...
TCP/IP协议族与网络体系结构实战解析
1. 计算机网络体系结构解析计算机网络体系结构是理解整个互联网通信的基础框架。目前主流的体系结构有三种:OSI七层模型、TCP/IP四层模型和教学用的五层模型。作为一名从业十年的网络工程师,我发现在实际工作中TCP/IP四层模型的应用最为广泛。OSI七层模型…...
区块链AI骗局:深扒某DeFi项目的测试造假链
当技术信任沦为欺诈工具 在软件测试领域,我们习惯于与代码、流程和标准打交道,致力于构建可靠、可验证的系统。然而,在区块链与人工智能融合的前沿地带,一场针对“信任”本身的系统性造假正在上演。本文旨在从一个软件测试工程师…...
优化粒子群算法实现VMD分解参数优化
56_基于改进的粒子群算法实现vmd分解参数优化。 matlab环境,2018a及以上版本。 可用于学习粒子群算法的改进,以及粒子群算法的使用。 1.考虑到传统粒子群算法中固定的权值容易使算法陷入局部最优解,针对这一缺点,从惯性权重和学习…...
机械臂空间直线圆弧圆插补代码介绍
【机械臂空间直线&圆弧&圆插补】 代码主要功能: 1. 正逆运动学解析解; 2. 空间直线、圆弧以及圆插补; 3. 基于Slerp、Nlerp算法的机械臂末端两姿态插补算法; 4. 机械臂空间直线、圆弧以及圆插补。 购前须知: 1. 代码均为个人手写&…...
小智AI固件开发者的福音:VSCode插件一键搞定ESP-IDF v5.4环境(Windows/Linux通用)
小智AI固件开发者的福音:VSCode插件一键搞定ESP-IDF v5.4环境(Windows/Linux通用) 在物联网开发领域,ESP32系列芯片凭借其优异的性能和丰富的功能,已经成为智能硬件开发的首选平台之一。而作为ESP32官方推荐的开发框架…...
博士论文的“破茧”时刻:好写作AI如何陪你走完最后一公里
一个论文科普博主眼中的“学术极限运动辅助器” 亲爱的博士生朋友们,今天我们聊点“不轻松”的话题。 当你的同学在朋友圈晒工作、晒娃、晒旅游时,你在晒什么?晒图书馆的凌晨三点,晒被导师批注得“血肉模糊”的草稿,晒…...
vmware workstation 安装esxi ,ip 设置192.168.10.4, 网络中心 vmnet8 ip 网关也是同一个网段,但是浏览器打不开ip 地址
esxi虚拟机配置上网 vmware esxi 虚拟机网络设置vmware workstation 安装esxi ,ip 设置192.168.10.4, 网络中心 vmnet8 ip 网关也是同一个网段,但是浏览器打不开ip 地址 在 VMware Workstation 中安装 ESXi 后无法通过浏览器访问管理界面(19…...
iView组件TypeScript类型推断:提升开发体验的5个高级技巧
iView组件TypeScript类型推断:提升开发体验的5个高级技巧 【免费下载链接】iview A high quality UI Toolkit built on Vue.js 2.0 项目地址: https://gitcode.com/gh_mirrors/iv/iview iView是一个基于Vue.js 2.0的高质量UI组件库,为开发者提供了…...
OpenClaw安全防护:Phi-3-mini操作权限管控方案
OpenClaw安全防护:Phi-3-mini操作权限管控方案 1. 为什么需要OpenClaw安全防护 上周我在调试一个自动化文档整理任务时,差点酿成大错。当时OpenClaw连接的Phi-3-mini模型误解了我的指令,试图删除整个工作目录下的文件。虽然及时终止了进程&…...
ArcGIS Pro用户必看:解决CAD转SHP后坐标系丢失的完整配置流程(附Python脚本)
ArcGIS Pro用户必看:解决CAD转SHP后坐标系丢失的完整配置流程(附Python脚本) 当你从CAD图纸转换到SHP格式时,最令人头疼的问题莫过于坐标系信息的丢失。想象一下,你精心准备的规划图纸在GIS软件中变成了一堆无法定位的…...
