将html静态页面转化为图片

发布于:2025-06-28 ⋅ 阅读:(14) ⋅ 点赞:(0)

package com.demo.common.utils;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Document;
import org.xhtmlrenderer.swing.Java2DRenderer;

import javax.imageio.ImageIO;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;

@Slf4j
public class FileUtil {

    /**
     * @Author MaTingHui
     * @Description: 将html静态页面转化为图片
     * @Date 2025/6/17 9:49
     * @Param [htmlFilePath, imageFilePath, formatName, width, height]
     * @return java.io.File
     */
    public static File generateHtmlToImage(String htmlFilePath, String imageFilePath, String formatName, int width, int height){
        File imageFile = new File(imageFilePath);
        if (StringUtils.isEmpty(formatName)) {
            formatName = "jpg";
        }
        String str;
        ByteArrayInputStream bin = null;
        try {
            if (!imageFile.exists()) {
                imageFile.createNewFile();
            }
            str = FileUtils.readFileToString(new File(htmlFilePath), "UTF-8");
            byte[] bytes = str.getBytes();
            bin = new ByteArrayInputStream(bytes);
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(bin);
            Java2DRenderer renderer = new Java2DRenderer(document, width, height);
            BufferedImage img = renderer.getImage();
            return imageFile;
        } catch (Exception e) {
            log.error("html转图片失败htmlFilePath:{}", htmlFilePath, e);
        } finally {
            if (bin != null) {
                try {
                    bin.close();
                } catch (IOException e) {
                    log.error("释放资源失败:", e);
                }
            }
        }
        return null;
    }

}

依赖:

       <dependency>
            <groupId>org.xhtmlrenderer</groupId>
            <artifactId>flying-saucer-pdf-itext5</artifactId>
            <version>9.1.6</version>
        </dependency>       


网站公告

今日签到

点亮在社区的每一天
去签到