PDFBox 是一个用于处理 PDF 文档的开源 Java 工具库。该项目允许创建新的 PDF 文档、操作现有文档以及从文档中提取内容。
我们下面要通过 PDFBox 来演示如何将一个 PDF 文件转换成一个 JPG 文件。代码如下:
代码语言:javascript复制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 版本):
代码语言:javascript复制<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version>
</dependency>
相关内容:
- PHP重置JPG图片尺寸的函数
- Eclipse 3.7(代号Indigo)正式版发布
- 我用Java写的PasswordGenerate改进版源码
- Java编写的随机密码生成器源码
- Java多线程控制的心得
- Java多线程的实现
- Java的数组冒泡排序法
- 为NetBeans配置开发Java所需的JDK路径