实现方案

前端人员,提供相关的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后端)相关推荐

  1. java 后台跳出提示_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  2. java request 处理过程_小猿圈Java开发之从代码看spring mvc请求处理过程

    原标题:小猿圈Java开发之从代码看spring mvc请求处理过程 Java作为编程界的常青树,有自己生存的独到之处,小猿圈java讲师今天就分享一个关于从代码看spring mvc请求处理过程,通 ...

  3. java list 元素去重_小猿圈Java开发之list按照元素某个字段去重详解

    小猿圈Java老师给大家分享一篇关于如何实现Java8中list按照元素的某个字段去重的详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧. ...

  4. php 小程序生成海报,微信小程序生成海报

    vivo x9  微信版本7.0.4   系统版本2.6.2 var memberTopicCount = this.data.memberTopicCount;//动态数 var memberFol ...

  5. java gc 有钱人_小猿圈java之GC垃圾回收机制

    垃圾回收机制是提高性能的重要机制,所以不管学什么语言也好,垃圾回收机制都是有的,也是很重要的,小猿圈这章详解一下java的GC垃圾回收机制,需要用的或者感兴趣的朋友们,可以跟着小编学习一下. 一.GC ...

  6. 微信小程序生成海报 poster

    原生小程序 canvas 小程序-canvas绘图并保存到系统相册 小程序导出朋友圈海报详细记录 逻辑清晰的说明了,原生小程序 canvas 绘制的步骤: 获取 Canvas.context 绘制背景 ...

  7. 微信小程序生成海报可保存海报和分享海报

    最近因为小程序生成海报分享的问题头疼了很久,所以自己总结了一下供大家参考,可以放置用户头像姓名以及商品名称价格和二维码太阳码等,实测可用! 下载链接https://download.csdn.net/ ...

  8. Java一键生成数据库表结构

    Java一键生成数据库表结构 支持的数据库很多,基本上都支持 核心依赖: <!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP ...

  9. 网易 java社招面试_一个妹子网易Java岗社招面试经历分享

    博客群发软件--用 Windows Live Writer完美发布新浪网易blogcnbl 博客群发软件--用 Windows Live Writer完美发布新浪.网易.blogcn.blogbus. ...

  10. 小程序生成海报携带参数-云函数生成二维码

    1. 逻辑代码 async qcFn() {console.log('生成海报');let that = thisconst houseId = this.data.houseDetail._idco ...

最新文章

  1. 零基础能学好UI设计吗
  2. IOS中Cell自定义
  3. python中文读音ndarray-numpy中的ndarray方法和属性
  4. 服务器tcp连接占满_漫画 | 一台Linux服务器最多能支撑多少个TCP连接?
  5. Google API 设计指南 - 前言
  6. mysql6支持connect by_mysql 实现oracle start with connect by递归
  7. CodeForces - 1514D Cut and Stick(线段树/随机数)
  8. colab上下载kaggle上notebook输出的自定义数据集并永久存储到GoogleDrive
  9. maven配置junit5_JUnit 5和Selenium –改善项目配置
  10. Pi network到底怎么样?我们来深入剖析一下
  11. 怎么更改wifi频段_手机wifi延迟高怎么办
  12. Ansible详解(九)——Ansible配置文件详解
  13. git 生成多个patch_git生成Patch和打Patch
  14. springmvc中常见的简单的文件上传和下载
  15. 监控摄像头网页直播解决方案
  16. druid emitter 监控模块
  17. 开源图像数据集管理工具fiftyone使用
  18. 家谱文化④:江苏百岁老人多达8375人,健康长寿的秘密都写在家谱
  19. 华为OD机试 - 租车骑绿岛
  20. C语言中的函数(重点介绍自定义函数)

热门文章

  1. python大漠插件官网视频教程_python使用大漠插件进行脚本开发的尝试(一)
  2. 【IDEA/SVN】IDEA 从SVN导入项目到本地
  3. 蓝牙耳机哪个音质好?推荐几款音质好的蓝牙耳机
  4. 双色球和大乐透的随机选号并排列
  5. IDM插件安装、使用方法教程
  6. ST-LINK官方驱动下载方法
  7. alienfx无法与计算机,戴尔G3无法检测到AlienFX设备怎么办
  8. js 将16进制转为字符串
  9. android 圆形自定义进度条,Android自定义漂亮的圆形进度条
  10. 西门子触摸屏脚本程序_西门子触摸屏实例程序