PDF文件转图片
需求:应用环境不支持pdf文件展示
说明:本示例借助apache提供的pdfbox完成
1、引入pdfbox依赖
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.20</version>
</dependency>
2、转换方法定义
import org.apache.pdfbox.rendering.PDFRenderer;
private List<byte[]> findJkhtByteArray(String base64sString) throws Exception {
base64sString = base64sString.replace("data:image/png;base64,", "");
BASE64Decoder decoder = new sun.misc.BASE64Decoder();
byte[] bytes = decoder.decodeBuffer(base64sString);
List<byte[]> result = new ArrayList<>();
try (PDDocument document = PDDocument.load(bytes)) {
PDFRenderer renderer = new PDFRenderer(document);
for (int i = 0; i < document.getNumberOfPages(); ++i) {
BufferedImage bufferedImage = renderer.renderImageWithDPI(i, 100);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "png", out);
result.add(out.toByteArray());
}
}
return result;
}
3、前端调用示例
<view v-for="(item,index) in urls" :key="index">
<img class="img" :src="'data:image/png;base64,' + item" :alt="altmsg"></img>
</view>