博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java PDF转换成图片并输出给前台展示
阅读量:4678 次
发布时间:2019-06-09

本文共 2632 字,大约阅读时间需要 8 分钟。

首先需要导入所需工具类

<dependency>

<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.1.19</version>
</dependency>
 

1、PDF转图片的方法    for那里看看是几张图片。 几页。根据页数进行转

/***

* PDF文件转PNG图片,全部页数
*
* @param PdfFilePath pdf完整路径
* @param dpi dpi越大转换后越清晰,相对转换速度越慢
* @return
*/
public static String pdf2Image(String PdfFilePath, String dstImgFolder, int dpi) {
File file = new File(PdfFilePath);
PDDocument pdDocument;
try {
String imgPDFPath = file.getParent();
int dot = file.getName().lastIndexOf('.');
String imagePDFName = file.getName().substring(0, dot); // 获取图片文件名
String imgFolderPath = dstImgFolder;
pdDocument = PDDocument.load(file);
PDFRenderer renderer = new PDFRenderer(pdDocument);
/* dpi越大转换后越清晰,相对转换速度越慢 */
StringBuffer imgFilePath = null;
for (int i = 1; i < 2; i++) {
String imgFilePathPrefix = imgFolderPath + File.separator + imagePDFName;
imgFilePath = new StringBuffer();
imgFilePath.append(imgFilePathPrefix);
imgFilePath.append(".png");
File dstFile = new File(imgFilePath.toString());
BufferedImage image = renderer.renderImageWithDPI(i, dpi);
ImageIO.write(image, "png", dstFile);
}
System.out.println("PDF文档转PNG图片成功!");
return imgFilePath.toString();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
 

2、调用这个方法  生成BASE64数据

String s = wpath + BRCA + "-" + CTNND1_15951 + "-KMplot.pdf";

//转换返回图片地址
String s1 = pdf2Image(s, wpath, 300);
File file = new File(s1);
//把图片转换为BASE64数据
FileInputStream inputFile = new FileInputStream(file);
byte[] buffer = new byte[(int) file.length()];
inputFile.read(buffer);
inputFile.close();
String ss = new BASE64Encoder().encode(buffer);
 

3、使用ajax的方式将图片数据取回。直接设置如IMG标签中

img就是取回的数据

<img id="ImagePic" src="data:image/png;base64,'+img+'" alt="Base64 encoded image" style="width:600px;" />

完整的ajax代码

var index = layer.load();

$.ajax({
type:"post",
dataType:"json",
contentType:'application/json;charset=UTF-8',
url:"getTnImg",
data:JSON.stringify(data),
success:function(resp){
layer.close(index);
var img = resp.img;
var html = '<img id="ImagePic" src="data:image/png;base64,'+img+'" alt="Base64 encoded image" style="width:600px;" />';
layer.open({
type: 1,
skin: 'layui-layer-rim', //加上边框
area: ['50%', '90%'], //宽高
content: html
});
},
error:function(XMLHttpRequest,textStatus,errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.statusText);
}
});
 

转载于:https://www.cnblogs.com/jxldjsn/p/10951854.html

你可能感兴趣的文章
网站优化过程中关键字选择的六大项
查看>>
pku 3349 Snowflake Snow Snowflakes 哈希
查看>>
【转】NAND和NOR flash详解
查看>>
hoj1356 Miller_Rabbin算法
查看>>
Codeforces Global Round 1
查看>>
DB time实时过程分析
查看>>
MySQL入门:下载
查看>>
IDA*算法——骑士精神
查看>>
异常处理
查看>>
Robot Framework——百度搜索
查看>>
如何优雅的将DTO转化成BO
查看>>
day30—使用Flexbox和CSS Grid实现高效布局实践
查看>>
mvc4 ninject 注入HttpContext
查看>>
多线程学习(十二)
查看>>
CSS display属性的值及作用
查看>>
[独孤九剑]Oracle知识点梳理(一)表空间、用户
查看>>
tomcat_logs
查看>>
java数组
查看>>
安装theano
查看>>
神经网络从零到熟练——水果分类学习
查看>>