Java实现将HTML文件与字符串转换为图片

 更新时间:2025年08月31日 09:29:00   作者:Eiceblue  
在 Java 开发中,我们经常会遇到将 HTML 内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用 Free Spire.Doc for Java 库来实现这一功能吧

前言

在 Java 开发中,我们经常会遇到将 HTML 内容转换为图片的需求,比如生成网页报告截图、电商商品详情页预览图、在线文档缩略图等。本文将介绍如何使用 Free Spire.Doc for Java 库来实现这一功能。

Free Spire.Doc for Java 是一款免费库且无需任何依赖,有一定页面限制,适合中小型项目或个人开发者使用。 在开始之前,将以下依赖项添加到您的pom.xml文件中:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.doc.free</artifactId>
    <version>5.3.2</version>
</dependency>

核心实现:HTML 转图片完整代码

Free Spire.Doc for Java 实现 HTML 转图片的逻辑很清晰:先将 HTML 内容加载为 Document 文档对象,再通过saveToImages 方法将文档页面转换为图片流,最后输出为本地图片文件。以下是两种常见场景的完整代码:

场景 1:转换本地 HTML 文件为图片

如果需要转换的 HTML 已保存为本地文件(如input.html),代码如下:

import com.spire.doc.*;
import com.spire.doc.documents.*;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;

public class HTMLtoImage {
    public static void main(String[] args) throws Exception{
        // 加载 HTML 文档
        Document document = new Document();
        document.loadFromFile("E:\\input.html", FileFormat.Html, XHTMLValidationType.None);

        // 将 HTML 文档转换为图片
        BufferedImage[] images = document.saveToImages(ImageType.Bitmap);

        // 遍历图片集合
        for (int i = 0; i < images.length; i++) {

            // 将图像保存为 png 格式
            BufferedImage image = images[i];
            File file = new File(String.format(("HTML转图-%d.png"), i));
            ImageIO.write(image, "PNG", file);
        }
    }
}

输出:

场景 2:转换 HTML 字符串为图片

若 HTML 内容是动态生成的字符串(如接口返回的 HTML 片段),无需保存为本地文件,可直接加载字符串转换:

import com.spire.doc.Document;
import com.spire.doc.documents.ImageType;
import com.spire.doc.documents.Paragraph;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class HtmlStringToImage {
    public static void main(String[] args) throws IOException {
            // 定义HTML字符串(可包含图片标签等)
            String htmlContent = "<!DOCTYPE html>" +
                    "<html>" +
                    "<head><style>" +
                    "body{font-family:Arial;}" +
                    ".title{color:#2E86AB;font-size:24px;}" +
                    ".content{margin-top:20px;line-height:1.8;}" +
                    "</style></head>" +
                    "<body>" +
                    "<h1 class='title'> Java HTML字符串转图片</h1>" +
                    "<div class='content'>这是一个HTML字符串转图片的测试案例。</div>" +
                    "<img src='E:\\data.jpg' width='300' height='200'/>" +
                    "</body></html>";

            // 创建Document对象,写入HTML字符串
            Document document = new Document();
            Paragraph paragraph = document.addSection().addParagraph();
            paragraph.appendHTML(htmlContent);

            // 转换为图片并保存
            BufferedImage[] images = document.saveToImages(ImageType.Bitmap);
            for (int i = 0; i < images.length; i++) {

                // 将图像保存为 png 格式
                BufferedImage image = images[i];
                File file = new File(String.format(("HTML字符串转图.png"), i));
                ImageIO.write(image, "PNG", file);

        }
    }
}

输出:

关键参数说明

为了让转换效果更符合需求,这里补充几个关键参数的调整技巧和注意事项:

  • 图片格式选择:PNG 支持透明背景且无损压缩,适合文字类内容;JPG 压缩率高,适合含图片的 HTML(可通过ImageIO.write 调整图片格式)。
  • HTML 兼容性注意事项:图片路径需使用绝对路径(如C:\\test.jpghttp://xxx.com/test.jpg),相对路径可能导致图片加载失败。
  • 多页 HTML 处理:若 HTML 内容超过 1 页,saveToImages 方法会返回一个 BufferedImage 数组,每个元素对应 1 页图片,可通过循环遍历保存所有页面。

通过 Free Spire.Doc for Java 实现 HTML 转图片,代码简洁且无额外依赖,非常适合快速集成到项目中。除了 HTML 转图片,该免费 Java 库还支持更多Word文档处理功能。

到此这篇关于Java实现将HTML文件与字符串转换为图片的文章就介绍到这了,更多相关Java HTML转图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot3.2.2整合MyBatis Plus3.5.5的详细过程

    SpringBoot3.2.2整合MyBatis Plus3.5.5的详细过程

    这篇文章给大家介绍了SpringBoot3.2.2整合MyBatis Plus3.5.5的详细过程,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • 一文详解mybatis二级缓存执行流程

    一文详解mybatis二级缓存执行流程

    本文主要详细介绍了mybatis二级缓存执行流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考价值,感兴趣的朋友们下面随着小编来一起学习吧
    2024-02-02
  • Java面试题冲刺第二十六天--实战编程

    Java面试题冲刺第二十六天--实战编程

    这篇文章主要为大家分享了最有价值的三道java实战面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java使用poi将word转换为html

    Java使用poi将word转换为html

    这篇文章主要为大家详细介绍了Java使用poi将word转换为html的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Java 注解学习笔记

    Java 注解学习笔记

    一直都在使用注解,但是一直都没有用的很明白,后来被逼的发现不搞明白真的就没有办法愉快的写代码了,所以,这篇《Java中的注解学习笔记》就呼之欲出了
    2020-10-10
  • Mybatis-Plus实体类继承Model的使用小结

    Mybatis-Plus实体类继承Model的使用小结

    Mybatis-Plus实体类继承Model的使用是Mybatis-Plus中的一个重要特性,它允许开发者通过继承Model类来快速实现一些通用的功能,本文主要介绍了Mybatis-Plus实体类继承Model的使用小结,感兴趣的可以了解一下
    2024-07-07
  • springBoot项目常用目录解读

    springBoot项目常用目录解读

    这篇文章主要介绍了springBoot项目常用目录解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Java Stream 的 flatMap 与 map 的核心区别从原理到实战应用全解析

    Java Stream 的 flatMap 与 map 的核

    map进行元素到元素的单层转换,flatMap则将元素映射为流后再扁平化处理,适用于嵌套结构展开,二者核心差异在于是否展开多层数据,选择时需根据数据结构层级和性能需求决定,本文给大家介绍Java Stream 的flatMap与map的核心区别,感兴趣的朋友一起看看吧
    2025-08-08
  • Java简单实现约瑟夫环算法示例

    Java简单实现约瑟夫环算法示例

    这篇文章主要介绍了Java简单实现约瑟夫环算法,简单描述了约瑟夫环问题,并结合实例形式分析了Java实现约瑟夫环的具体操作技巧,需要的朋友可以参考下
    2017-09-09
  • springboot log4j2.xml如何读取application.yml中属性值

    springboot log4j2.xml如何读取application.yml中属性值

    这篇文章主要介绍了springboot log4j2.xml如何读取application.yml中属性值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论