【已解决】Java调用phantomjs在Linux上echarts-convert.js 生成图片大小是0解决办法
- 工作小总结
- 时间:2023-06-06 10:53
- 2971人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
先看错误的
生成的图片大小是0
原因:可能是异步生成图片导致:
您需要使用Java通过命令行执行phantomjs来调用echarts-convert.js并生成图片。具体步骤如下:
在Linux上安装phantomjs,可使用命令
sudo apt-get install phantomjs
进行安装,或者从官网下载并解压。将echarts-convert.js复制到Linux上。您可以从echarts官网下载该文件,将其放到您的Linux文件系统中。
在Java中通过ProcessBuilder调用命令行,例如:
ProcessBuilder processBuilder = new ProcessBuilder("/path/to/phantomjs", "/path/to/echarts-convert.js", "-infile", "/path/to/echarts-config.json", "-outfile", "/path/to/output.png"); Process process = processBuilder.start();
其中,/path/to/phantomjs
和/path/to/echarts-convert.js
分别是phantomjs和echarts-convert.js的路径,/path/to/echarts-config.json
是你的echarts配置文件的路径,/path/to/output.png
是输出图片的路径。
等待进程结束,并获取输出结果。您可以使用Process.waitFor()方法等待进程运行结束,并使用Process.getInputStream()方法获取进程运行的输出结果。如果您希望查看进程运行的错误信息,可以使用Process.getErrorStream()方法。
检查生成的图片是否存在。如果一切顺利,您将能够在指定的输出路径中找到生成的图片。
注意,echarts-convert.js的使用可能会有一些限制,请查看echarts官方文档以了解更多信息。
扩展:
Process.getErrorStream() 怎么查看错误信息?
您可以通过获取Process.getErrorStream()
输出的内容来查看进程运行时的错误信息。具体实现方式可以参考下面的代码:
// 创建进程
ProcessBuilder processBuilder = new ProcessBuilder("/path/to/phantomjs", "/path/to/echarts-convert.js", "-infile", "/path/to/echarts-config.json", "-outfile", "/path/to/output.png");
Process process = processBuilder.start();
// 等待进程结束
int exitCode = process.waitFor();
// 获取输出结果
StringBuffer output = new StringBuffer();
StringBuffer error = new StringBuffer();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line;
while ((line = reader.readLine()) != null) {
output.append(line).append("\n");
}
}
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()))) {
String line;
while ((line = reader.readLine()) != null) {
error.append(line).append("\n");
}
}
// 检查生成的图片是否存在
if (exitCode == 0) {
// 生成成功
System.out.println("生成图片成功!");
} else {
// 生成失败,输出错误信息
System.out.println("生成图片失败,错误信息如下:" + error.toString());
}