springboot 之 HTML与图片生成 (2)

前言

之前写了一篇html转图片的 文章,使用中文时会出现乱码情况,后来又从网上找了下信息,这篇主要介绍下另一个转换库。

依赖

xml 复制代码
<!-- 用于将html转图片-->
 <dependency>
     <groupId>gui.ava</groupId>
     <artifactId>html2image</artifactId>
     <version>2.0.1</version>
 </dependency>
 <dependency>
     <groupId>net.sourceforge.nekohtml</groupId>
     <artifactId>nekohtml</artifactId>
     <version>1.9.22</version>
     <exclusions>
         <exclusion>
             <groupId>xerces</groupId>
             <artifactId>xercesImpl</artifactId>
         </exclusion>
     </exclusions>
 </dependency>
 <dependency>
     <groupId>xerces</groupId>
     <artifactId>xercesImpl</artifactId>
     <version>2.12.2</version>
 </dependency>
 <dependency>
     <groupId>org.xhtmlrenderer</groupId>
     <artifactId>core-renderer</artifactId>
     <version>R8</version>
     <exclusions>
         <exclusion>
             <groupId>com.lowagie</groupId>
             <artifactId>itext</artifactId>
         </exclusion>
     </exclusions>
 </dependency>
 <!-- 用于将html转图片  end-->

相关代码

java 复制代码
/**
 * @param html html code
 * @param imagePath absolute path, example:'/tmp/test.png'
 * @param height png height
 * @param width png width
 * @return
 */
public static boolean html2Image(String html, String imagePath, int width, int height) {
    try {
        HtmlParser htmlParser = new HtmlParserImpl();
        htmlParser.loadHtml(html);
        ImageRenderer imageRenderer = new ImageRendererImpl(htmlParser);
        imageRenderer.setWidth(width);
        if (height > 0){
            imageRenderer.setHeight(height);
        }
        imageRenderer.saveImage(imagePath);
        imageRenderer.clearCache();
        return true;
    }catch (Exception e){
        log.error("html2Image failed,", e);
        return false;
    }
}

测试

注:这里直接测试测试生成图片相关接口

java 复制代码
/**
 * 测试图片生成
 */
@Test
void testHtml2Image(){
    HtmlParser htmlParser = new HtmlParserImpl();
    htmlParser.load(new File("F:\\\\test\\\\testss.html"));
    ImageRenderer imageRenderer = new ImageRendererImpl(htmlParser);
    //高度不需要设置,宽度要比html多40
    imageRenderer.setWidth(360);
    imageRenderer.saveImage("F:\\test\\png-output.png");
    imageRenderer.clearCache();
}

如果出现乱码,请确认操作系统里是否有html中配置的字体,如果没有,安装字体再测试,应该没啥问题了。

字体安装可以 参考链接

相关推荐
dkbnull8 小时前
深入理解Spring两大特性:IoC和AOP
spring boot
洋洋技术笔记13 小时前
Spring Boot条件注解详解
java·spring boot
洋洋技术笔记2 天前
Spring Boot配置管理最佳实践
spring boot
用户8307196840822 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
大道至简Edward2 天前
Spring Boot 2.7 + JDK 8 升级到 Spring Boot 3.x + JDK 17 完整指南
spring boot·后端
洋洋技术笔记3 天前
Spring Boot启动流程解析
spring boot·后端
怒放吧德德3 天前
Spring Boot 实战:RSA+AES 接口全链路加解密(防篡改 / 防重放)
java·spring boot·后端
李慕婉学姐3 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
QQ5110082853 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe3 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5