将pdf转化为图片的方法

server/2024/9/25 10:39:15/

pdf_0">将pdf转化为图片的方法

java">package com.pdf.change2img;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springframework.util.Base64Utils;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;/*** @author * @Description* @Date 2021/10/22 下午9:19*/
public class PdfToImageUtil {/*** dpi越大转换后越清晰,相对转换速度越慢*/private static final Integer DPI = 100;/*** 转换后的图片类型*/private static final String IMG_TYPE = "png";/*** PDF转图片** @param fileContent PDF文件的二进制流* @return 图片文件的二进制流*/public static List<byte[]> pdfToImage(byte[] fileContent) throws IOException {List<byte[]> result = new ArrayList<>();try (PDDocument document = PDDocument.load(fileContent)) {PDFRenderer renderer = new PDFRenderer(document);for (int i = 0; i < document.getNumberOfPages(); ++i) {BufferedImage bufferedImage = renderer.renderImageWithDPI(i, DPI);ByteArrayOutputStream out = new ByteArrayOutputStream();ImageIO.write(bufferedImage, IMG_TYPE, out);result.add(out.toByteArray());}}return result;}/**** @param base64PDF* @return* @throws IOException*/public static List<String> pdfToImage2(String base64PDF) throws IOException {List<String> result = new ArrayList<>();byte[] decodePDF = Base64Utils.decode(base64PDF.getBytes());try (PDDocument document = PDDocument.load(decodePDF)) {PDFRenderer renderer = new PDFRenderer(document);for (int i = 0; i < document.getNumberOfPages(); ++i) {BufferedImage bufferedImage = renderer.renderImageWithDPI(i, DPI);ByteArrayOutputStream out = new ByteArrayOutputStream();ImageIO.write(bufferedImage, IMG_TYPE, out);result.add(Base64Utils.encodeToString(out.toByteArray()));}}return result;}
}

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

相关文章

【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ③

DRQ什么时候调度Node去填写dependency ::Pipeline调度Node的sequenceId 0执行 Pipeline::ProcessRequest() { for (UINT nodeIndex 0; nodeIndex < m_orderedNodeCount ; nodeIndex) m_pDeferredRequestQueue->AddDef…

Go语言在Web开发中有哪些常用框架?

文章目录 1. Gin原因和解决方案示例代码 2. Echo原因和解决方案示例代码 3. Revel原因和解决方案示例代码 4. Buffalo原因和解决方案示例代码 总结 Go语言在Web开发中拥有许多优秀的框架&#xff0c;这些框架帮助开发者快速构建稳定且高效的Web应用。下面是一些常用的Go语言Web…

学习笔记:能量信号与功率信号(一)

目录 一、能量信号&#xff08;Energy Signal&#xff09; 二、功率信号&#xff08;Power Signal&#xff09; 三、信号关系图 四、总结 能量信号和功率信号是信号分析中两个基本的概念&#xff0c;它们主要用来描述信号在时间域中能量分布的特性&#xff0c;对于理解信号…

上海鑫吉百数——让制造型食品企业焕发新生机!

随着全球化和互联网的普及&#xff0c;食品行业的竞争也日益激烈。数字化转型有助于企业打破地域限制&#xff0c;拓宽市场渠道&#xff0c;提升品牌影响力和竞争力。在信息化、网络化的时代背景下&#xff0c;数字化转型成为企业适应社会发展的必然选择。消费者对于食品的需求…

SSH远程直连服务器docker容器的jupyter

SSH远程直连服务器docker容器的jupyter 动机&#xff1a;最近在公司服务器使用jupyter出现了点问题&#xff0c;也不知道怎么回事&#xff0c;jupyter lab打开都没问题&#xff0c;但是准备打开一个ipynb文件时就卡住了&#xff0c;啥反应没有&#xff0c;ctrlC 也不能关掉jupy…

黑马点评(五) -- 分布式锁-redission

1 . 分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&#xff0c;可重入锁的意义在于防止死锁&#xff0c;比如HashTable这样的代码中&#xff0c;他的方法都…

k8s pod 镜像拉取策略

在 Kubernetes (k8s) 中&#xff0c;Pod 容器镜像的拉取策略通过 imagePullPolicy 属性来控制。这一策略决定了 kubelet 如何以及何时从容器镜像仓库中拉取镜像。以下是三种主要的镜像拉取策略及其详细说明&#xff1a; Always: 说明: 这是默认的拉取策略。当设置为 Always 时&…

云计算革新:以太网 Scale-UP 网络为 GPU 加速赋能

谈谈基于以太网的GPU Scale-UP网络 Intel Gaudi-3 采用 RoCE 互联技术&#xff0c;促进了 Scale-UP 解决方案。业界专家 Jim Keller 倡导以太网替代 NVLink。Tenstorrent 成功应用以太网实现片上网络互联。RoCE 和以太网已成为互联解决方案的新兴趋势&#xff0c;为高性能计算提…