【已解决】Java调用phantomjs在Linux上echarts-convert.js 生成图片大小是0解决办法

  • 作者: 凯哥Java(公众号:凯哥Java)
  • 工作小总结
  • 时间:2023-06-06 10:53
  • 2346人已阅读
简介 先看错误的生成的图片大小是0您需要使用Java通过命令行执行phantomjs来调用echarts-convert.js并生成图片。具体步骤如下:在Linux上安装phantomjs,可使用命令 sudoapt-getinstallphantomjs 进行安装,或者从官网下载并解压。将echarts-convert.js复制到Linux上。您可以从echarts官网下载该文件,

🔔🔔好消息!好消息!🔔🔔

 如果您需要注册ChatGPT,想要升级ChatGPT4。凯哥可以代注册ChatGPT账号代升级ChatGPT4

有需要的朋友👉:微信号 kaigejava2022

先看错误的

65cfca2e4d34ad38dc2ee8366df87b32.png

生成的图片大小是0

原因:可能是异步生成图片导致:

95b5cb765849bdc488a68925a2e36b12.png

您需要使用Java通过命令行执行phantomjs来调用echarts-convert.js并生成图片。具体步骤如下:

  1. 在Linux上安装phantomjs,可使用命令 sudo apt-get install phantomjs 进行安装,或者从官网下载并解压。

  2. 将echarts-convert.js复制到Linux上。您可以从echarts官网下载该文件,将其放到您的Linux文件系统中。

  3. 在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是输出图片的路径。

  1. 等待进程结束,并获取输出结果。您可以使用Process.waitFor()方法等待进程运行结束,并使用Process.getInputStream()方法获取进程运行的输出结果。如果您希望查看进程运行的错误信息,可以使用Process.getErrorStream()方法。

  2. 检查生成的图片是否存在。如果一切顺利,您将能够在指定的输出路径中找到生成的图片。

注意,echarts-convert.js的使用可能会有一些限制,请查看echarts官方文档以了解更多信息。

cf14979c9b22cb8552b92baedc6f4811.png

扩展:

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());
}

TopTop