Java 环境下用 PDFBox 实现 PDF 文档转换 JPG 图片的功能
2023-06-13 09:17:41 时间
PDFBox 是一个用于处理 PDF 文档的开源 Java 工具库。该项目允许创建新的 PDF 文档、操作现有文档以及从文档中提取内容。
我们下面要通过 PDFBox 来演示如何将一个 PDF 文件转换成一个 JPG 文件。代码如下:
package com.sunbloger.pdf2jpg.controller;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value = "/japi")
public class render {
@RequestMapping(value = "/convert", method = RequestMethod.GET)
public @ResponseBody Map<String, Object> convert () throws Exception
{
Map<String, Object> responseMap = new HashMap<String, Object>();
PDDocument doc = null;
InputStream stream = null;
FileOutputStream fos = null;
ByteArrayOutputStream baos = null;
try {
// 读入 PDF 文件
stream = new FileInputStream("D:\\workspace-springboot\\1.pdf");
doc = PDDocument.load(stream);
// 渲染
PDFRenderer pdfRenderer = new PDFRenderer(doc);
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(0, 300);
pdfRenderer = null;
// 写入 JPG 文件
baos = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "jpg", baos);
byte[] dataList = baos.toByteArray();
baos = null;
File file = new File("D:\\workspace-springboot\\1.jpg");
fos = new FileOutputStream(file);
fos.write(dataList);
fos.close();
fos = null;
file = null;
responseMap.put("suc", 1);
responseMap.put("info", "convert sucess.");
} catch (Exception e) {
throw e;
}
return responseMap;
}
}
上述代码用 SpringBoot 构建了一个 PDF 转 JPG 的接口,为了方便演示,PDF 和 JPG 文件地址均采用了本地路径,开发者可以自行调整代码,例如改为通过 POST 请求传入 PDF 文件。
pom.xml文件中添加 PDFBox 信息(推荐使用目前 2.0 最新的 2.0.27 版本):
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version>
</dependency>
相关内容:
相关文章
- Java集合详解8:Java集合类细节精讲
- java字符串的拆分_Java中的字符串分割 .
- java long string 转换_Java long 转成 String的实现[通俗易懂]
- java double转decimal_Java中Double与BigDecimal的相互转换
- java打印数组_Java中打印数组的三种方式
- import java.io 是什么意思_Java IO 详解
- 纠结应该先学Python还是Java?看完就有数了
- java启动器_JAVA基础:Java 启动器如何查找类
- 什么是java虚拟机(Java Virtual Machine)?
- java实现ajax_Ajax&Java
- JAVA对象转map_java处理字符串类型的map
- java list 转json 字符串_JSON的String字符串与Java的List列表对象的相互转换
- java字符串转换为json对象6_Json对象与Json字符串的转化、JSON字符串与Java对象的转换…
- 9 个 yyds 的 Java 项目,可应对各种私活!
- 单个用户及Ip请求频率限制思路(附java实现)
- 【Android NDK 开发】JNI 方法解析 ( 字符串数组参数传递 | 字符串遍历 | 类型强转 | Java 字符串与 C 字符串转换 | 字符串释放 )
- Java基础学习笔记四 Java基础语法详解编程语言
- 干货:Java多线程详解(内附源码)编程语言
- java中全角半角字符的相互转换详解编程语言
- 一个简单的Java MVC模式示例详解编程语言
- 在Linux下搭建完美的Java开发环境(linux搭建java开发环境)
- Java与Oracle的完美结合(java和oracle)
- 使用Java连接Linux服务器的简单方法(java连接linux)
- 持久化Java持久化技术与Redis高级应用(redis高级之java)
- 策略处理Java对象过期策略的Redis实践(redisjava过期)
- 缓存Redis与Java实现过期数据缓存(redisjava过期)
- 连接MySQL连接技术之Java实现(java的mysql)
- _home让Linux下Java更有效:更新Java_Home(linux更改java)
- Java调用Linux库实现跨系统功能(java调用linux库)
- 进程Linux下创建多个Java进程的简易方法(linux 多个java)
- 基于Linux操作系统上实现 Java 编程(linux r java)
- Redis面试中Java相关技术面试题汇总(redis面试题java)
- java教程之java注解annotation使用方法