Java實現(xiàn)將HTML文件與字符串轉(zhuǎn)換為圖片
前言
在 Java 開發(fā)中,我們經(jīng)常會遇到將 HTML 內(nèi)容轉(zhuǎn)換為圖片的需求,比如生成網(wǎng)頁報告截圖、電商商品詳情頁預覽圖、在線文檔縮略圖等。本文將介紹如何使用 Free Spire.Doc for Java 庫來實現(xiàn)這一功能。
Free Spire.Doc for Java 是一款免費庫且無需任何依賴,有一定頁面限制,適合中小型項目或個人開發(fā)者使用。 在開始之前,將以下依賴項添加到您的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>
核心實現(xiàn):HTML 轉(zhuǎn)圖片完整代碼
Free Spire.Doc for Java 實現(xiàn) HTML 轉(zhuǎn)圖片的邏輯很清晰:先將 HTML 內(nèi)容加載為 Document 文檔對象,再通過saveToImages 方法將文檔頁面轉(zhuǎn)換為圖片流,最后輸出為本地圖片文件。以下是兩種常見場景的完整代碼:
場景 1:轉(zhuǎn)換本地 HTML 文件為圖片
如果需要轉(zhuǎn)換的 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 文檔轉(zhuǎn)換為圖片
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轉(zhuǎn)圖-%d.png"), i));
ImageIO.write(image, "PNG", file);
}
}
}
輸出:

場景 2:轉(zhuǎn)換 HTML 字符串為圖片
若 HTML 內(nèi)容是動態(tài)生成的字符串(如接口返回的 HTML 片段),無需保存為本地文件,可直接加載字符串轉(zhuǎn)換:
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字符串轉(zhuǎn)圖片</h1>" +
"<div class='content'>這是一個HTML字符串轉(zhuǎn)圖片的測試案例。</div>" +
"<img src='E:\\data.jpg' width='300' height='200'/>" +
"</body></html>";
// 創(chuàng)建Document對象,寫入HTML字符串
Document document = new Document();
Paragraph paragraph = document.addSection().addParagraph();
paragraph.appendHTML(htmlContent);
// 轉(zhuǎn)換為圖片并保存
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字符串轉(zhuǎn)圖.png"), i));
ImageIO.write(image, "PNG", file);
}
}
}
輸出:

關(guān)鍵參數(shù)說明
為了讓轉(zhuǎn)換效果更符合需求,這里補充幾個關(guān)鍵參數(shù)的調(diào)整技巧和注意事項:
- 圖片格式選擇:PNG 支持透明背景且無損壓縮,適合文字類內(nèi)容;JPG 壓縮率高,適合含圖片的 HTML(可通過
ImageIO.write調(diào)整圖片格式)。 - HTML 兼容性注意事項:圖片路徑需使用絕對路徑(如
C:\\test.jpg或http://xxx.com/test.jpg),相對路徑可能導致圖片加載失敗。 - 多頁 HTML 處理:若 HTML 內(nèi)容超過 1 頁,
saveToImages方法會返回一個BufferedImage數(shù)組,每個元素對應 1 頁圖片,可通過循環(huán)遍歷保存所有頁面。
通過 Free Spire.Doc for Java 實現(xiàn) HTML 轉(zhuǎn)圖片,代碼簡潔且無額外依賴,非常適合快速集成到項目中。除了 HTML 轉(zhuǎn)圖片,該免費 Java 庫還支持更多Word文檔處理功能。
到此這篇關(guān)于Java實現(xiàn)將HTML文件與字符串轉(zhuǎn)換為圖片的文章就介紹到這了,更多相關(guān)Java HTML轉(zhuǎn)圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring boot打包jar分離lib和resources方法實例
這篇文章主要介紹了Spring boot打包jar分離lib和resources方法實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-05-05
java鏈表應用--基于鏈表實現(xiàn)隊列詳解(尾指針操作)
這篇文章主要介紹了java鏈表應用--基于鏈表實現(xiàn)隊列,結(jié)合實例形式分析了java基于鏈表實現(xiàn)隊列尾指針相關(guān)操作使用技巧,需要的朋友可以參考下2020-03-03
java 記錄一個子串在整串中出現(xiàn)的次數(shù)實例
今天小編就為大家分享一篇java 記錄一個子串在整串中出現(xiàn)的次數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
關(guān)于使用Lambda表達式簡化Comparator的使用問題
這篇文章主要介紹了關(guān)于使用Lambda表達式簡化Comparator的使用問題,文中圖文講解了Comparator對象的方法,需要的朋友可以參考下2023-04-04
Spring Boot調(diào)用 Shell 腳本實現(xiàn)看門狗功能
這篇文章主要介紹了Spring Boot調(diào)用 Shell 腳本實現(xiàn)看門狗功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Java調(diào)用WebService服務的三種方式總結(jié)
雖然WebService這個框架已經(jīng)過時,但是有些公司還在使用,在調(diào)用他們的服務的時候就不得不面對各種問題,本篇文章總結(jié)了最近我調(diào)用?WebService的心路歷程,3種方式可以分別嘗試,需要的朋友可以參考下2023-08-08

