Java后臺(tái)生成圖片的完整步驟
前言
由于從事的是支付行業(yè),最近對(duì)接的一些第三方支付有時(shí)候需要我們這邊提供用戶的資料和交易信息,并且以圖片的形式發(fā)送給他們,由于這是后臺(tái)程序自動(dòng)處理,然后直接發(fā)送給第三方支付公司,因此需要后臺(tái)查出用戶的相關(guān)信息,然后生成圖片,調(diào)用第三方提供的接口,將圖片鏈接以附件的形式發(fā)給他們,當(dāng)用戶發(fā)起dispute操作的時(shí)候,觸發(fā)我方后臺(tái)的自動(dòng)處理機(jī)制。
Java后臺(tái)生成圖片
1. 依賴的jar包(maven依賴)
<dependency> <groupId>com.github.xuwei-k</groupId> <artifactId>html2image</artifactId> <version>0.1.0</version> </dependency>
2. 代碼
package com.generatePic;
import gui.ava.html.image.generator.HtmlImageGenerator;
public class TestGeneratePic {
public static void main(String[] args) {
generatePic();
}
public static void generatePic() {
HtmlImageGenerator htmlImageGenerator = new HtmlImageGenerator();
//format 表示html里的元素,比如表格
String format = "<table>\n" +
" <tbody>\n" +
" <tr>\n" +
"\t<img src="https://static.msport.com/public/up/pocket/operator/msportlogo.png" />\n" +
" </tr>\n" +
" </tbody>\n" +
"</table>\n" +
"\n" +
"\n" +
"<table border =1>\n" +
" <tbody>\n" +
" <tr>\n" +
" <td>User Account(user account number)</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
" <tr>\n" +
" <td>user's email</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
"\t <tr>\n" +
" <td>user's name</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
" </tbody>\n" +
"</table>\n" +
"</br>\n" +
"\n" +
"<table>\n" +
" <tbody>\n" +
" <tr>\n" +
" <font size = "4">\n" +
" <b>PAYMENT INFOMATION</b> \n" +
" </font>\n" +
" </tr>\n" +
" </tbody>\n" +
"</table>\n" +
"\n" +
"<table border =1>\n" +
" <tbody>\n" +
" <tr>\n" +
" <td>Transaction Reference</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
" <tr>\n" +
" <td>Transaction Amount</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
"\t<tr>\n" +
" <td>Currency</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
"\t<tr>\n" +
" <td>Transaction Status</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
"\t<tr>\n" +
" <td>Transaction Date</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
"\t<tr>\n" +
" <td>Payment Type</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
"\t<tr>\n" +
" <td>Card Number</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
"\t<tr>\n" +
" <td>Service Details</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
" </tbody> \n" +
"</table>\n" +
"<br/>\n" +
"\n" +
"<table>\n" +
" <tbody>\n" +
" <tr>\n" +
" <font size = "4">\n" +
" <b>SERVICE HISTORY</b> \n" +
" </font>\n" +
" </tr>\n" +
" </tbody>\n" +
"</table>\n" +
"\n" +
"<table border =1>\n" +
"<thead>\n" +
" <tr>\n" +
" <th>DATE</th>\n" +
" <th>DESCRIPTION</th>\n" +
" <th>AMOUNT</th>\n" +
" <th>BALANCE</th>\n" +
" </tr>\n" +
" </thead>\n" +
" \n" +
" <tbody>\n" +
" <tr>\n" +
" <td>%s</td>\n" +
" <td>%s</td>\n" +
" <td>%s</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
" <tr>\n" +
" <td>%s</td>\n" +
" <td>%s</td>\n" +
" <td>%s</td>\n" +
" <td>%s</td>\n" +
" </tr>\n" +
" </tbody>\n" +
"</table>\n" +
"\n" +
"\n";
String finalHtml = "<html></body>" + format + "</body></html>";
htmlImageGenerator.loadHtml(finalHtml);
//圖片名
String fileName = "1" + ".png";
htmlImageGenerator.saveAsImage(fileName);
}
}
3. 生成的圖片

生成的圖片路徑默認(rèn)在項(xiàng)目路徑下:

4. 實(shí)際應(yīng)用的建議
可以通過 String.format() 函數(shù), 拼接實(shí)際的數(shù)據(jù),比如3中的%s就可以替換為實(shí)際的數(shù)據(jù),最后生成自己想要的數(shù)據(jù),如果你的前端技術(shù)足夠好,那么你可以在后臺(tái)畫出更優(yōu)美的圖片。
總結(jié)
到此這篇關(guān)于Java后臺(tái)生成圖片的文章就介紹到這了,更多相關(guān)Java后臺(tái)生成圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot動(dòng)態(tài)切換數(shù)據(jù)源的具體實(shí)現(xiàn)與原理分析
目前有個(gè)需求,需要使用不同的數(shù)據(jù)源,例如某業(yè)務(wù)要用A數(shù)據(jù)源,另一個(gè)業(yè)務(wù)要用B數(shù)據(jù)源,所以下面這篇文章主要給大家介紹了關(guān)于Springboot動(dòng)態(tài)切換數(shù)據(jù)源的具體實(shí)現(xiàn)與原理分析,需要的朋友可以參考下2021-12-12
Feign調(diào)用中的兩種Header傳參方式小結(jié)
這篇文章主要介紹了Feign調(diào)用中的兩種Header傳參方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Yml轉(zhuǎn)properties文件工具類YmlUtils的詳細(xì)過程(不用引任何插件和依賴)
這篇文章主要介紹了Yml轉(zhuǎn)properties文件工具類YmlUtils(不用引任何插件和依賴),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
WebUploader客戶端批量上傳圖片 后臺(tái)使用springMVC
這篇文章主要為大家詳細(xì)介紹了WebUploader客戶端批量上傳圖片,后臺(tái)使用springMVC接收實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Mybatis和orcale update語句中接收參數(shù)為對(duì)象的實(shí)例代碼
Mybatis的 mapper.xml 中 update 語句使用 if 標(biāo)簽判斷對(duì)像屬性是否為空值。本文重點(diǎn)給大家介紹Mybatis和orcale update語句中接收參數(shù)為對(duì)象的實(shí)例代碼,需要的朋友參考下吧2017-09-09
Java多線程并發(fā)之線程池任務(wù)請(qǐng)求攔截測試實(shí)例
這篇文章主要介紹了Java多線程并發(fā)之線程池任務(wù)請(qǐng)求攔截測試實(shí)例,隊(duì)列中永遠(yuǎn)沒有線程被加入,即使線程池已滿,也不會(huì)導(dǎo)致被加入排隊(duì)隊(duì)列,實(shí)現(xiàn)了只有線程池存在空閑線程的時(shí)候才會(huì)接受新任務(wù)的需求,需要的朋友可以參考下2023-12-12
Spring框架配置java web實(shí)現(xiàn)實(shí)例化
這篇文章主要介紹了Spring框架配置java web實(shí)現(xiàn)實(shí)例化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

