IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Springboot后台HTML/富文本转图片 -> 正文阅读

[Java知识库]Springboot后台HTML/富文本转图片

项目场景:

项目场景:后台将html文件转换成图片资源。项目是老师布置作业给学生做,作业试题对接的是第三方题库的接口,但它们都采用题干为HTML格式,而我们传统的试题格式都是图片格式,则需要调用第三方题库后,将每个试题的题干富文本存入到HTML文件中,并引用第三方题库的富文本css样式适配题干原有的展示样式,最后拿整个HTML文件去转对应试题的图片。


实现描述

提示:这里描述可以实现转换的技术
在这里插入图片描述

我对接了其中三种技术:html2imagecssbox和第三方工具wkhtmltox
做个总结:
html2images:实现起来非常简单,只需要引用html2image的pom依赖,实现其核心类HtmlImageGenerator的loadHtml()方法,就可以实现转换。优:实现简单,易用;缺:a.如果html代码里带有图片时,生成的程序必须有一定的等待时间(Thread.sleep(xx)),等待时间需要根据实际图片大小去设置(初步估计是工具加载流未完成就进行图片的生成以及保存工作)b.画布背景颜色变红,可重新设置画布背景颜色。 c.对Css3样式支持很差(width标签设置都不生效),复杂页面不友好。
个人评价:技术门槛低,十分简单html页面转换时使用。

cssbox:实现起来也比较简单,引用cssbox的pom依赖,将html代码文本创建一个cssbox文档资源DocumentSource,再通过cssbox的DOMSource对其文档解析并通过cssbox的DOMAnalyzer创建CSS解析器设置样式属性,最后通过创建BrowserCanvas浏览器画布设置其宽高尺寸得到图像。相比于html2images,cssbox解决了html代码里有图片时的问题和画布背景颜色变红问题,但还是对Css3样式支持不是太理想(width标签设置还是不生效),仅支持它内部实现的CSS解析器。
个人评价:通过画布的原理来实现的,未最终采用它的原因是width标签设置不生效。

wkhtmltox:通过第三方工具包来实现转换,不需要知道如何实现,只需要知道如何安装。解决了我上述所提到的几个问题abc,但安装麻烦。(window上安装及其简单;Linux物理机上直接跑项目的时候安装也不复杂,但Linux用docker安装wkhtmltox并给docker部署SpringBoot项目的容器中调用wkhtmltox容器转换工具时,部署比较复杂)

解决方案:

1、Linux用docker安装wkhtmltox并给docker部署SpringBoot项目的容器中调用wkhtmltox容器转换工具
参考文章:https://blog.csdn.net/weixin_42838675/article/details/116023685

  • 拉取wkhtmltopdf镜像:
     docker pull dicoming/wkhtmltopdf-ws:latest
    
  • 运行镜像
    docker run -d \ 
     -v /tmp/wkhtmltopdf:/tmp/wkhtmltopdf \ 
     -v /usr/share/fonts:/usr/share/fonts \ 
     -p 10080:80 \
     --name="wkhtmltopdf" \
     dicoming/wkhtmltopdf-ws
    
    说明:
    • -v /tmp/wkhtmltopdf:/tmp/wkhtmltopdf:wkhtmltox工具的tmp数据,同SpringBoot项目的转换引用wkhtmltopdf模块做了映射关系(比如是business模块),相当于两个docker容器共用/tmp/wkhtmltopdf目录。
       docker run -d --name business_module \ 
       -v /tmp/wkhtmltopdf:/tmp/wkhtmltopdf \ 
       -v /usr/share/fonts:/usr/share/fonts
       --restart=always e0653adf3185
    
    • -v /usr/share/fonts:/usr/share/fonts:wkhtmltox工具需要的字体同物理机做映射关系(可以根据转换的html文件中具体引用的字体。linux安装字体参考文章
    • -p 10080:80 :wkhtmltox的docker容器80映射10080(10080需要开端口)
    • wkhtmltox的Http请求方式如下:
      wkhtmltox的Http请求方式

提示:下面代码示例中仅包含html2imagecssbox和第三方工具wkhtmltox

源码点击这里 ,这是小编的个人笔记,喜欢的给小编给个赞!!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:41:24  更:2022-07-04 22:44:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:42:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码