java实现截取PDF指定页并进行图片格式转换功能
作者:消失的太阳 时间:2023-08-24 02:58:56
1、引入依赖
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.16</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.16</version>
</dependency>
jar包下载地址:
https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox
https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox
2、实现DEMO
package com.dddpeter.app;
import org.apache.pdfbox.multipdf.Splitter;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.List;
import java.util.ListIterator;
public class PDFUtils {
public static String splitPdf(int pageNum, String source, String dest) {
File indexFile = new File(source);
File outFile = new File(dest);
PDDocument document = null;
try {
document = PDDocument.load(indexFile);
// document.getNumberOfPages();
Splitter splitter = new Splitter();
splitter.setStartPage(pageNum);
splitter.setEndPage(pageNum);
List<PDDocument> pages = splitter.split(document);
ListIterator<PDDocument> iterator = pages.listIterator();
while (iterator.hasNext()) {
PDDocument pd = iterator.next();
if (outFile.exists()) {
outFile.delete();
}
pd.save(outFile);
pd.close();
if (outFile.exists()) {
return outFile.getPath();
}
}
document.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void pdfFileToImage(File pdffile,String targetPath){
try {
FileInputStream instream = new FileInputStream(pdffile);
InputStream byteInputStream=null;
try {
PDDocument doc = PDDocument.load(instream);
PDFRenderer renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
if (pageCount > 0) {
BufferedImage image = renderer.renderImage(0, 4.0f);
image.flush();
ByteArrayOutputStream bs = new ByteArrayOutputStream();
ImageOutputStream imOut;
imOut = ImageIO.createImageOutputStream(bs);
ImageIO.write(image, "png", imOut);
byteInputStream = new ByteArrayInputStream(bs.toByteArray());
byteInputStream.close();
}
doc.close();
}
catch (IOException e) {
e.printStackTrace();
}
File uploadFile = new File(targetPath);
FileOutputStream fops;
fops = new FileOutputStream(uploadFile);
fops.write(readInputStream(byteInputStream));
fops.flush();
fops.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static byte[] readInputStream(InputStream inStream) throws Exception {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
inStream.close();
return outStream.toByteArray();
}
public static void main(String[] args) {
String path = splitPdf(4,"D:\\data\\11.pdf","D:\\data\\out11.pdf");
File file =new File(path);
//上传的是png格式的图片结尾
String targetfile="D:\\data\\out11.png";
pdfFileToImage(file,targetfile);
}
}
总结
以上所述是小编给大家介绍的java实现截取PDF指定页并进行图片格式转换功能,希望对大家有所帮助
来源:https://www.cnblogs.com/xsdty/p/11463439.html
标签:java,截取,PDF,指定页,图片,格式,转换
0
投稿
猜你喜欢
基于Android SDK-在64位Linux中使用需要注意的问题
2022-03-26 16:49:13
Mybatis 开发注解快速入门
2021-12-01 16:03:36
MP(MyBatis-Plus)实现乐观锁更新功能的示例代码
2022-10-27 15:41:24
浅谈java中String与StringBuffer的不同
2021-11-24 11:54:12
Spring Boot 集成Mybatis实现主从(多数据源)分离方案示例
2023-08-10 07:43:21
c#基础知识---委托,匿名函数,lambda
2023-06-12 18:18:07
android长截屏原理及实现代码
2021-11-13 05:55:50
java 面试题闰年判断详解及实例
2023-11-27 19:09:01
使用C#创建Windows服务的实例代码
2022-07-30 05:58:48
Android入门之AlertDialog用法实例分析
2023-12-16 02:27:02
C++中左值和右值的区别详解
2021-09-11 00:07:42
Java常用流程控制语句实现原理解析
2023-11-08 14:11:34
Android 如何实现动态申请权限
2023-07-30 00:51:31
Maven分模块开发执行指令失败的问题
2021-07-10 19:00:15
java实现图片缩放、旋转和马赛克化
2021-07-23 03:04:54
详解JAVA之运算符
2023-09-05 13:22:46
java合并多个文件的实例代码
2023-07-28 12:56:02
java 实现迷宫回溯算法示例详解
2023-12-14 23:52:26
Kotlin数据容器深入讲解
2022-03-28 05:19:34
java 对象输入输出流读写文件的操作实例
2021-06-13 15:24:30