概述
将HTML页面转为图片,找了很多方法,发现CSSBox对前端css支持性最好。在解码base64的时候,会出现中文乱码的问题,删除空格和换行即可
采用CSSBox(http://cssbox.sourceforge.net/)
<dependency>
<groupId>net.sf.cssbox</groupId>
<artifactId>cssbox</artifactId>
<version>4.12</version>
</dependency>
HTML转图片,再转base64
ImageRenderer render = new ImageRenderer();
String url = "http://127.0.0.1:8080/api/receiptPage";
File file;
InputStream inputStream = null;
byte[] data = null;
try {
//创建一个临时文件
file = File.createTempFile("temp", ".png");
//将html转为png
FileOutputStream out = new FileOutputStream(file);
render.renderURL(url, out, ImageRenderer.Type.PNG);
//字节流读取png
inputStream = new FileInputStream(file);
data = new byte[inputStream.available()];
inputStream.read(data);
out.close();
inputStream.close();
file.deleteOnExit();
} catch (Exception e) {
e.printStackTrace();
}
BASE64Encoder encoder = new BASE64Encoder();
//删除所有空格,换行,解决base解码出现中文乱码
return encoder.encode(data).replaceAll("n", "").replaceAll("r", "");
解码base64
public static boolean generateImage(String imgStr) {
if(imgStr == null){
return false;
}
BASE64Decoder decoder = new BASE64Decoder();
try{
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0;i<b.length;++i){
if(b[i]<0){
b[i]+=256;
}
}
OutputStream out = new FileOutputStream(new File("d:/html.png"));
out.write(b);
out.flush();
out.close();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
最后
以上就是默默雪碧为你收集整理的java 将html转为图片,然后转为base64的全部内容,希望文章能够帮你解决java 将html转为图片,然后转为base64所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复