java一键生成海报_小程序生成海报(java后端)
实现方案
前端人员,提供相关的html页面, 后端人员提供接口,前端人员通过参数设置html页面需要渲染的内容, 最后使用wkhtmltoimage或者phantomjs 对html 进行截图生成海报, 个人感觉wkhtmltoiamge 比phantomjs 要快一点,稳定一点我主要说下wkhtmltoimage的实现方案
实现步骤
安装环境
windows: 下载安装包安装即可
linux: 下载对应的安装包 ,还需安装对应中文字体(phantomjs 也需要安装字体),html中需要声明引用
yum install libjpeg libXrender libXext xorg-x11-fonts-75dpi.noarch xorg-x11-fonts-Type1 bitmap-fonts-cjk
rpm -ivh wkhtmltox-0.12.6-1.centos7.x86_64.rpm
安装字体
yum install bitmap-fonts-cjk
mkdir /usr/share/fonts/win
拷贝字体到 /usr/share/fonts/win下
cd /usr/share/fonts/win
mkfontscale
mkfontdir
fc-cache
相关代码
利用java 执行命令 调用wkhtmltoImage 设置相关参数,具体参数查看wkhtmltoImage 命令提示
package com.yumingzhu.wxweb.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @Description
* @Author yumigzhu
* @Date 2020/7/22 20:12
*/
public class CustomWKHtmlToPdfUtil {
private static String tempPath = "C:/apps/tmpFile";// 图片保存目录
public static String getCommand(String htmlToImage, String sourceFilePath, String targetFilePath) {
//--quality 设置为50 是比较合适的, 默认的94 可能会导致图片文件过大
ProcessBuilder pb = new ProcessBuilder(htmlToImage, "--crop-w", "800", "--width", "800","--quality", "50",
sourceFilePath, targetFilePath);
Process process;
try {
process = pb.start();
//注意,调用process.getErrorStream()而不是process.getInputStream()
BufferedReader errStreamReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
System.out.println("read errstreamreader");
String line = null;
line = errStreamReader.readLine();
while (line != null) {
System.out.println(line);
line = errStreamReader.readLine();
}
process.destroy();
System.out.println("destroyed process");
} catch (IOException e) {
e.printStackTrace();
}
return targetFilePath;
}
public static void main(String[] args) throws Exception {
String imagePath = tempPath + "/" + System.currentTimeMillis() + ".png";//图片路径
System.out.println(imagePath);
String htmlToImage = "E:\\softwareAPP\\wkhtmltopdf\\bin\\wkhtmltoimage.exe";
CustomWKHtmlToPdfUtil.getCommand(htmlToImage,
"file:///G:/share/text_none_title_share/index.html",
imagePath);
System.out.println("执行完成");
}
}
踩坑记录
如果html页面设置的宽高比较小, 这样截出来的图片也会比较小,比较模糊,, 增大html 的宽高,可以使图片更清晰,这样会导致截出来的图片文件更大,这样用户在小程序下载过程会更慢,这里需要自己权衡
wkhtmlImage 对 css3 linear-gradient 不支持,不能使用样式下划线,可以考虑使用图片代替
中文字体需要声明引用,才能生效
相关window,linux,,字体安装包
链接:https://pan.baidu.com/s/1jsfkDT1xS_rWeQ6-LBLvJQ
提取码:3c0b
本文地址:https://blog.csdn.net/yumingzhu1/article/details/107628842
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
java一键生成海报_小程序生成海报(java后端)相关推荐
- java 后台跳出提示_小猿圈Java初学者练习小案例:猜数字游戏
对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...
- java request 处理过程_小猿圈Java开发之从代码看spring mvc请求处理过程
原标题:小猿圈Java开发之从代码看spring mvc请求处理过程 Java作为编程界的常青树,有自己生存的独到之处,小猿圈java讲师今天就分享一个关于从代码看spring mvc请求处理过程,通 ...
- java list 元素去重_小猿圈Java开发之list按照元素某个字段去重详解
小猿圈Java老师给大家分享一篇关于如何实现Java8中list按照元素的某个字段去重的详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧. ...
- php 小程序生成海报,微信小程序生成海报
vivo x9 微信版本7.0.4 系统版本2.6.2 var memberTopicCount = this.data.memberTopicCount;//动态数 var memberFol ...
- java gc 有钱人_小猿圈java之GC垃圾回收机制
垃圾回收机制是提高性能的重要机制,所以不管学什么语言也好,垃圾回收机制都是有的,也是很重要的,小猿圈这章详解一下java的GC垃圾回收机制,需要用的或者感兴趣的朋友们,可以跟着小编学习一下. 一.GC ...
- 微信小程序生成海报 poster
原生小程序 canvas 小程序-canvas绘图并保存到系统相册 小程序导出朋友圈海报详细记录 逻辑清晰的说明了,原生小程序 canvas 绘制的步骤: 获取 Canvas.context 绘制背景 ...
- 微信小程序生成海报可保存海报和分享海报
最近因为小程序生成海报分享的问题头疼了很久,所以自己总结了一下供大家参考,可以放置用户头像姓名以及商品名称价格和二维码太阳码等,实测可用! 下载链接https://download.csdn.net/ ...
- Java一键生成数据库表结构
Java一键生成数据库表结构 支持的数据库很多,基本上都支持 核心依赖: <!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP ...
- 网易 java社招面试_一个妹子网易Java岗社招面试经历分享
博客群发软件--用 Windows Live Writer完美发布新浪网易blogcnbl 博客群发软件--用 Windows Live Writer完美发布新浪.网易.blogcn.blogbus. ...
- 小程序生成海报携带参数-云函数生成二维码
1. 逻辑代码 async qcFn() {console.log('生成海报');let that = thisconst houseId = this.data.houseDetail._idco ...
最新文章
- 零基础能学好UI设计吗
- IOS中Cell自定义
- python中文读音ndarray-numpy中的ndarray方法和属性
- 服务器tcp连接占满_漫画 | 一台Linux服务器最多能支撑多少个TCP连接?
- Google API 设计指南 - 前言
- mysql6支持connect by_mysql 实现oracle start with connect by递归
- CodeForces - 1514D Cut and Stick(线段树/随机数)
- colab上下载kaggle上notebook输出的自定义数据集并永久存储到GoogleDrive
- maven配置junit5_JUnit 5和Selenium –改善项目配置
- Pi network到底怎么样?我们来深入剖析一下
- 怎么更改wifi频段_手机wifi延迟高怎么办
- Ansible详解(九)——Ansible配置文件详解
- git 生成多个patch_git生成Patch和打Patch
- springmvc中常见的简单的文件上传和下载
- 监控摄像头网页直播解决方案
- druid emitter 监控模块
- 开源图像数据集管理工具fiftyone使用
- 家谱文化④:江苏百岁老人多达8375人,健康长寿的秘密都写在家谱
- 华为OD机试 - 租车骑绿岛
- C语言中的函数(重点介绍自定义函数)