JAVA 网页转图片

最近遇到一个需求,需要将网页转成图片,一番折腾之后,发现了2中方法:

  • html2image
  • cssbox

1)html2image

示例代码如下:

HtmlImageGenerator imageGenerator = new HtmlImageGenerator();
String htmlstr = "<p>页面内容</p>";
imageGenerator.loadHtml(htmlstr);
imageGenerator.getBufferedImage();
imageGenerator.saveAsImage("d:/hello-world.png");
imageGenerator.saveAsHtmlWithMap("hello-world.html", "hello-world.png");

maven:

<dependency>
    <groupId>com.github.xuwei-k</groupId>
    <artifactId>html2image</artifactId>
    <version>0.1.0</version>
</dependency>

大致看了下它的源码,只有5个类, 很简单,缺点是对css的支持非常不好。故放弃了使用。

2)cssbox

官网:http://cssbox.sourceforge.net/
示例代码如下:

ImageRenderer render = new ImageRenderer();
FileOutputStream out = new FileOutputStream(new File("D:/html.png"));
render.renderURL(url, out, ImageRenderer.Type.PNG);

maven:

 <dependency>
    <groupId>net.sf.cssbox</groupId>
    <artifactId>cssbox</artifactId>
    <version>4.12</version>
</dependency>

调用非常简单,能支持较多的css。当我在本地测试通过正得意时, 部署上线上linux系统,又发现一个坑爹的问题,导出的图片,文字变成乱码了。。
解决方案:
- 在网上下载中文字体,我这下载的是微软雅黑msyh.rar
- 将msyh.rar放入 /usr/share/fonts/zh_CN, zh_CN 文件夹需要自己创建。
- cd %JAVA_HOME%/jre/lib/fonts
- mkdir fallback
- 将msyh.ttf字体复制到fallback中

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值