Kotlin/Java 实现 Html 转图片

[复制链接]
发表于 2025-10-20 20:52:01 | 显示全部楼层 |阅读模式
1. Html2Image

  1. <dependency>
  2.         <groupId>gui.ava</groupId>
  3.         <artifactId>html2image</artifactId>
  4.         <version>2.0.1</version>
  5. </dependency>
复制代码
  1. String HtmlTemplateStr = "....";// HTML
  2. HtmlParser htmlParser = new HtmlParserImpl();
  3. htmlParser.loadHtml(HtmlTemplateStr);
  4. ImageRenderer imageRenderer = new ImageRendererImpl(htmlParser);
  5. imageRenderer.saveImage("./image.png");
复制代码
假如出现图片变红题目



  • 引用
  1. public class ImageRendererSubImpl extends ImageRendererImpl {
  2.     public ImageRendererSubImpl(DocumentHolder documentHolder) {
  3.         super(documentHolder);
  4.     }
  5.     private String getImageFormat(String filename) {
  6.         if (this.getImageFormat() != null) {
  7.             return this.getImageFormat();
  8.         } else {
  9.             return filename != null ? FormatNameUtil.formatForFilename(filename) : FormatNameUtil.getDefaultFormat();
  10.         }
  11.     }
  12.     private FSImageWriter getImageWriter(String imageFormat) {
  13.         FSImageWriter imageWriter = new FSImageWriter(imageFormat);
  14.         imageWriter.setWriteCompressionMode(this.getWriteCompressionMode());
  15.         imageWriter.setWriteCompressionQuality(this.getWriteCompressionQuality());
  16.         imageWriter.setWriteCompressionType(this.getWriteCompressionType());
  17.         return imageWriter;
  18.     }
  19.     public void saveImage(File file) {
  20.         try {
  21.             BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
  22.             this.save(outputStream, file.getName(), true);
  23.         } catch (IOException var3) {
  24.             throw new RenderException("IOException while rendering image to " + file.getAbsolutePath(), var3);
  25.         }
  26.     }
  27.     public void saveImage(String filename) {
  28.         this.saveImage(new File(filename));
  29.     }
  30.     private void save(OutputStream outputStream, String filename, boolean closeStream) {
  31.         try {
  32.             String imageFormat = this.getImageFormat(filename);
  33.             FSImageWriter imageWriter = this.getImageWriter(imageFormat);
  34.             BufferedImage bufferedImage = this.getBufferedImage(getImageType(imageFormat));
  35.             imageWriter.write(bufferedImage, outputStream);
  36.         } catch (IOException var15) {
  37.             throw new RenderException("IOException while rendering image", var15);
  38.         } finally {
  39.             if (closeStream) {
  40.                 try {
  41.                     outputStream.close();
  42.                 } catch (IOException var14) {
  43.                     ;
  44.                 }
  45.             }
  46.         }
  47.     }
  48.     /**
  49.      * 获取图像类型
  50.      * 根据图像的格式
  51.      */
  52.     public int getImageType(String imageFormat){
  53.         if ("jpg".equalsIgnoreCase(imageFormat)){
  54.             return BufferedImage.TYPE_3BYTE_BGR;
  55.         }
  56.         if ("bmp".equalsIgnoreCase(imageFormat)){
  57.             return BufferedImage.TYPE_INT_RGB;
  58.         }
  59.         return BufferedImage.BITMASK;
  60.     }
  61. }
复制代码
2. cssbox

  1. <dependency>
  2.     <groupId>net.sf.cssbox</groupId>
  3.     <artifactId>cssbox</artifactId>
  4.     <version>5.0.2</version>
  5. </dependency>
复制代码
  1. try{
  2.     // 创建 ImageRenderer 实例
  3.     ImageRenderer render = new ImageRenderer();
  4.     // 将文件路径转换为 URL
  5.     File file = new File("./html.html");
  6.     URL url = file.toURI().toURL();
  7.     // 输出文件流
  8.     FileOutputStream outputStream = new FileOutputStream("./html.png");
  9.     // 调用 renderURL 方法
  10.     render.renderURL(url.toString(), outputStream);
  11.     // 关闭输出流
  12.     outputStream.close();
  13. } catch (IOException e) {
  14.     e.printStackTrace();
  15. }
复制代码
3. Openhtmltopdf

  1. <dependency>
  2.     <groupId>io.github.openhtmltopdf</groupId>
  3.     <artifactId>openhtmltopdf-java2d</artifactId>
  4.     <version>1.1.24</version>
  5. </dependency>
复制代码
由于过于复杂这里使用基于的html转图片代码
  1. <!-- https://mvnrepository.com/artifact/com.github.alotuser/html2image -->
  2. <dependency>
  3.     <groupId>com.github.alotuser</groupId>
  4.     <artifactId>html2image</artifactId>
  5.     <version>1.0.0</version>
  6. </dependency>
复制代码
  1.         String html=HtmlRender.readHtml("D://about.xhtml");
  2. HtmlRender htmlRender=new HtmlRender(BufferedImage.TYPE_INT_RGB);//main: BufferedImage.TYPE_INT_ARGB
  3. htmlRender.addFontDirectory("D:/myfonts");
  4. //生成图片
  5. htmlRender.toPng(html, "D://test.png");
  6. //生成pdf文件
  7. try (FileOutputStream outputStream = new FileOutputStream("D:/test.pdf")) {
  8.         htmlRender.toPdf(html,outputStream);
  9.         }
复制代码
4. wkhtmltopdf

底层是欣赏器内核以是支持js
前去下载 https://wkhtmltopdf.org/downloads.html

自利用用下令行调用即可
5. chrome 举行渲染这里不睁开了


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表