Java利用html2image将html转换成图片或者PDF的简单实现

2022-10-13 2741点热度 0人点赞 0条评论

需求说明

Java或者SpringBoot项目中,需要将Html(可以是模板引擎例如thymeleaf生成的html)转成图片或者PDF。

实现

如果不是比较复杂的Html(例如Html里没有很多CSS3的语法,flex布局等、背景图,加载js外部css等),那么可以采用一个简单的类库:gui.ava.html2image,因为只需要引入到pom.xml,几行代码就可以搞定生成图片或者PDF的问题了。

使用方法:

pom.xml 增加如下依赖(使用的最新版是2.0.1,有很多地方还是显示的0.9版本,最近版本2.0.1在渲染html上要比0.9好很多):

<dependency>
   <groupId>gui.ava</groupId>
   <artifactId>html2image</artifactId>
   <version>2.0.1</version>
  </dependency>

生成PDF或者图片的代码片段示例如下:

// 加载html
Html2Image html2Image = Html2Image.fromHtml("<h4>Hello World</h4>");

// 转成BufferedImage
html2Image.getImageRenderer().getBufferedImage();
// 存成图片(注意是png图片),saveImage还可以接收OutputStream,变成流
html2Image.getImageRenderer().saveImage("/path/to/image.png");
// 存成pdf
html2Image.getPdfRenderer().saveToPDF("/path/to/pdf.pdf");

这样一个简单的图片或者pdf就生成了,代码和实现都很简洁,看你的需求是否够用,在比较复杂的html下内容还是会失真的。如果想要和Chrome下看到的网页一模一样,那这个就不合适了,可以利用Google的Pupperteer来截图,需要另外起一个Docker服务,截图效果非常完美,详见:https://blog.terrynow.com/2022/10/29/use-node-puppeteer-docker-mingalevme-screenshoter-as-service-to-fullscreen-screenshot-and-support-chinese/

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论