前言
之前寫了一篇html轉圖片的 文章,使用中文時會出現亂碼情況,后來又從網上找了下信息,這篇主要介紹下另一個轉換庫。
依賴
<!-- 用于將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-->
相關代碼
/*** @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;}
}
測試
注:這里直接測試測試生成圖片相關接口
/*** 測試圖片生成*/
@Test
void testHtml2Image(){HtmlParser htmlParser = new HtmlParserImpl();htmlParser.load(new File("F:\\\\test\\\\testss.html"));ImageRenderer imageRenderer = new ImageRendererImpl(htmlParser);//高度不需要設置,寬度要比html多40imageRenderer.setWidth(360);imageRenderer.saveImage("F:\\test\\png-output.png");imageRenderer.clearCache();
}
如果出現亂碼,請確認操作系統里是否有html中配置的字體,如果沒有,安裝字體再測試,應該沒啥問題了。
字體安裝可以 參考鏈接