使用Apache PDFBox将pdf文件转换为图片

server/2025/1/7 21:19:07/

一、引入依赖

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

二、每页进行转换

1、代码示例

java">package com.xiaobai.pdf2img;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.junit.jupiter.api.Test;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;/*** @Author 王天文* @Date 2025/1/2 21:51* @Description: pdf文件转图片*/
public class Pdf2ImgTest {@Testpublic void pdf2Img() {// pdf文件路径String pdfPath = "D:\\temp\\信息报送流程.pdf";// 图片目录String imgDir = "D:\\temp\\img\\";// 加载pdf文件try(PDDocument pdDocument = PDDocument.load(new File(pdfPath))) {PDFRenderer pdfRenderer = new PDFRenderer(pdDocument);for (int i = 0; i < pdDocument.getNumberOfPages(); i++) {// 渲染图像BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(i, 500);File imageFile = new File(imgDir + "page-" + (i + 1) + ".png");// 保存为png格式ImageIO.write(bufferedImage, "PNG", imageFile);}} catch (IOException e) {e.printStackTrace();}}
}

2、说明

org.apache.pdfbox.rendering.PDFRenderer#renderImageWithDPI(int, float) 根据指定的DPI将pdf页面渲染成图像。DPI值越大,渲染越清晰,转换速度越慢。

三、pdf文件转换成长图

1、实现思路

根据pdf文件路径加载文件,对pdf文件的每页进行图像渲染,根据所有图像的高度计算长图片的高度,获取到所有图像的最大宽度即为长图片的宽度,使用java.awt.Graphics2D将所有图像渲染到长图片上。

2、代码示例

java">package com.xiaobai.pdf2img;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.junit.jupiter.api.Test;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;/*** @Author 王天文* @Date 2025/1/2 22:23* @Description: pdf文件转换成长图*/
public class Pdf2MergeImgTest {@Testpublic void pdf2Img() {// pdf文件路径String pdfPath = "D:\\temp\\信息报送流程.pdf";// 图片目录String imgPath = "D:\\temp\\img\\mergeImg.png";// 长图片高度int totalHeight = 0;// 长图片宽度int maxWidth = 0;// 加载pdf文件try(PDDocument document = PDDocument.load(new File(pdfPath))) {PDFRenderer pdfRenderer = new PDFRenderer(document);BufferedImage[] bufferedImages = new BufferedImage[document.getNumberOfPages()];// pdf文件的每页转换成BufferedImagefor (int i = 0; i < document.getNumberOfPages(); i++) {// 根据dpi渲染图片BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(i, 500);bufferedImages[i] = bufferedImage;// 高度totalHeight += bufferedImage.getHeight();// 宽度if (maxWidth < bufferedImage.getWidth()) {maxWidth = bufferedImage.getWidth();}}/*合并图片*/BufferedImage mergeImage = new BufferedImage(maxWidth, totalHeight, BufferedImage.TYPE_INT_RGB);Graphics2D g = mergeImage.createGraphics();int currentHeight = 0;for (BufferedImage bufferedImage : bufferedImages) {g.drawImage(bufferedImage, 0, currentHeight, null);currentHeight += bufferedImage.getHeight();}// 保存长图片ImageIO.write(mergeImage, "PNG", new File(imgPath));} catch (Exception e) {e.printStackTrace();}}
}


http://www.ppmy.cn/server/156592.html

相关文章

linux 查找redis 的配置文件 (`redis.conf`)

要查找 Redis 的配置文件 (redis.conf)&#xff0c;可以使用以下方法&#xff1a; ✅ 方法 1&#xff1a;使用 locate 或 find 命令 ➡️ 1. 使用 find 命令 在 WSL 或 Linux 中运行以下命令来查找配置文件&#xff1a; sudo find / -name redis.conf➡️ 2. 使用 locate 命…

30分钟学会HTML

HTML 基本语法 HTML&#xff08;HyperText Markup Language&#xff09;是构成网页内容的基础。它使用一系列的标签来描述网页的结构&#xff0c;包括文本、图片、链接等元素。浏览器会解析这些标签并渲染成我们看到的网页。 在线体验一下 CodePen (在线 HTML 编辑器)。 千万不…

数据挖掘教学指南:从基础到应用

数据挖掘教学指南&#xff1a;从基础到应用 引言 数据挖掘是大数据时代的核心技术之一&#xff0c;它从大量数据中提取有用信息和知识。本教学文章旨在为学生和初学者提供一个全面的数据挖掘学习指南&#xff0c;涵盖数据挖掘的基本概念、流程、常用技术、工具以及教学建议。…

Clojure语言的正则表达式

以Clojure语言的正则表达式 引言 Clojure 是一门现代化的功能性编程语言&#xff0c;它运行在 JVM&#xff08;Java Virtual Machine&#xff09;上&#xff0c;特别适合于并发和并行计算。在 Clojure 中&#xff0c;正则表达式的使用为字符串处理和数据验证提供了强大的支持…

DevSecOps自动化在安全关键型软件开发中的实践、Helix QAC Klocwork等SAST工具应用

DevSecOps自动化对于安全关键型软件开发至关重要。 那么&#xff0c;什么是DevSecOps自动化&#xff1f;具有哪些优势&#xff1f;为何助力安全关键型软件开发&#xff1f;让我们一起来深入了解~ 什么是DevSecOps自动化&#xff1f; DevSecOps自动化是指在软件开发生命周期的各…

【Python】论文长截图、页面分割、水印去除、整合PDF

有的学校的论文只能在线预览&#xff0c;且存在水印。为保存到本地方便查阅&#xff0c;可以使用以下工作流进行处理&#xff1a; 用浏览器打开在线论文预览界面&#xff1b;使用fastone capture软件截长图&#xff1b;将论文按页数进行分割&#xff1b;按照阈值消除浅色的背景…

【ShuQiHere】使用 SCP 进行安全文件传输

【ShuQiHere】&#x1f680; 在日常的开发和运维工作中&#xff0c;文件传输是一个常见的任务。scp&#xff08;Secure Copy&#xff09;是一个基于 SSH 协议的文件传输工具&#xff0c;能够在本地和远程主机之间安全地复制文件和目录。本文将详细介绍 scp 的使用方法&#xf…

HTML——66.单选框

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>单选框</title></head><body><!--input元素的type属性&#xff1a;(必须要有)--> <!--单选框:&#xff08;如所住省会&#xff0c;性别选择&…