是根据开源项目写的:
https://gitee.com/ofdrw/ofdrw?_from=gitee_search
该ofdrw工具可以转换pdf、图片等,本文章主要介绍ofd文件使用ofdrw转换图片
引入依赖
<dependency>
<groupId>org.ofdrw</groupId>
<artifactId>ofdrw-converter</artifactId>
<version>1.13.4</version>
<!--排除这个slf4j-log4j12-->
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
建议引入图像支持库,可以避免Numbers of source Raster bands and source color space components do not matc等PageBlock无法渲染问题,这个也是坑之一,请确认是否需要该库
<!--扩展图像支持库 TwelveMonkeys ImageIO,原因是jdk自带的jpeg解析器不能解析所有jpeg格式的图片,如cmyk(印刷品模式)模式的图片。-->
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-jpeg</artifactId>
<version>3.4.1</version>
</dependency>
工具类
package cn.xx;
import org.apache.commons.lang3.StringUtils;
import org.ofdrw.converter.ImageMaker;
import org.ofdrw.reader.OFDReader;
import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
/**
* ofd文件工具类
*/
public class OfdUtils {
public static final Base64.Decoder DECODER = Base64.getDecoder();
private OfdUtils() {
}
/***
* ofdBase64转图片,返回base64编码集合
*
* @param ofdBase64 pdf类型base64
* @return 图片base64
*/
public static List<String> ofdToImageBase64(String ofdBase64){
List<String> list = new ArrayList<>();
if (StringUtils.isEmpty(ofdBase64)){
return list;
}
return ImageUtils.imageToBase64(OfdUtils.ofdToImage(ofdBase64));
}
/***
* ofdBase64转图片,返回图片对象
*
* @param ofdBase64 pdf类型base64
* @return BufferedImage
*/
public static List<BufferedImage> ofdToImage(String ofdBase64){
List<BufferedImage> list = new ArrayList<>();
if (StringUtils.isEmpty(ofdBase64)){
return list;
}
byte[] decode = DECODER.decode(ofdBase64.getBytes(StandardCharsets.UTF_8));
try(
ByteArrayInputStream stream = new ByteArrayInputStream(decode);
OFDReader reader = new OFDReader(stream);
) {
ImageMaker imageMaker = new ImageMaker(reader, 15);
for (int i = 0; i < imageMaker.pageSize(); i++) {
// 指定页码转换图片
list.add(imageMaker.makePage(i));
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
}
ImageUtils 工具包在:Java 图片工具,支持图片合并,转换base64_java图片转换器_@&-平淡★:的博客-CSDN博客,配合转换后的BufferedImage对象进行操作