需求:通过URL超链接获取超链接的页面快照
查询翻阅各种资料 ,找到了十种方式, 但是这十种方式都有各自的独特性,以下是我对其测试结果
方法一:java本身的API
不需要引用任何的jar包,不支持写在style里面的css和外置的css文件,只能写在标签上,还有也不支持js只能是html文件的url地址。
首先对一本地静态页面测试
原图结果图(结果图有裁剪)对比:
对应案例:
package cn.cosmos.page;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.net.URL;
/**
* Created with CosmosRay
*
* @author CosmosRay
* @date 2019/5/21
* Function:
*/
public class JavaApi {
public static void generateOutput() throws Exception {
String url = new File("E:/test/index.html").toURI().toString();
JEditorPane ed = new JEditorPane(new URL(url));
ed.setSize(1000,1300);
Thread.sleep(5000);
//create a new image
BufferedImage image = new BufferedImage(ed.getWidth(), ed.getHeight(),
BufferedImage.TYPE_INT_ARGB);
SwingUtilities.paintComponent(image.createGraphics(),
ed,
new JPanel(),
0, 0, image.getWidth(), image.getHeight());
//save the image to file
ImageIO.write((RenderedImage)image, "png", new File("E:/test/javacore.png"));
}
public static void main(String[] args) {
try {
generateOutput();
} catch (Exception e) {
e.printStackTrace();
}
}
}
方法二:Cobra
Cobra 是一个纯 Java 的HTML 解析和生成器,支持 HTML 4 、JavaScript、CSS 2。
效果图:
源码:
方法三:DjNativeSwing
只有这个支持js,css,但是网页超过一定高度,就会截取一半;如果是接口调用的话,因为是线程,所以这个只能运行一次就自动关闭了;使用