HIGHCHARTS
  • 关于我们
    • 关于我们
    • 联系方式
    • 新闻动态
    • 合作伙伴
  • 在线商店
  • 在线实例
    • Highcharts 演示
    • Highcharts Stock 演示
    • Highcharts Maps 演示
    • Highcharts Gantt 演示
    • 图集new
    • 客户案例
  • 文档教程
    • 使用教程
    • API 文档
    • 兼容性
    • 常见错误
    • 更新日志
  • 服务与支持
    • 获取技术支持
    • 下载中心
    • 地图数据
    • 产品规划
  • 产品中心
    • Highcharts
    • Highcharts Stock
    • Highcharts Map
    • Highcharts iOS
    • Highcharts Android
    • JShare
    • 爱图说
    • Highcharts 云服务
    • Highcharts 编辑器
    • 插件扩展
    • 应用扩展
  • 博客
  • 技术社区
  • 快速上手
    • Highcharts 系列软件简介
    • 1 分钟上手 Highcharts
    • 文件下载与使用
    • 通过 npm 安装
    • 通过 Bower 安装
    • 如何设置图表配置选项
    • Highcharts 兼容性
    • Highcharts 使用协议
  • 基础教程
    • 图表主要组成
    • 图表配置
    • 标题
    • 坐标轴
    • 数据列
    • 颜色
    • 数据提示框
    • 图例
    • 版权信息
    • HTML标签
    • 标示线
    • 标示带
    • 图表缩放
    • 语言文字
    • 标签及字符串格式化
    • 钻取功能
    • 3D 图表
    • 响应式
  • 数据处理
    • 数据处理概述
    • 服务端动态渲染图表
    • Ajax 请求数据接口
    • 处理文本或文本数据文件
    • 数据功能模块
  • 图表类型
    • 图表类型
    • 直线图
    • 曲线图
    • 面积图及面积范围图
    • 柱状图和条形图
    • 饼图
    • 范围图
    • 散点图及气泡图
    • 漏斗图及金字塔图
    • 极地图
    • 瀑布图
    • 误差线图
    • 箱线图
  • 高级特性
    • 堆叠图
    • 自由绘图
    • 国际化
  • 图表导出模块
    • 图表导出模块概述
    • 客户端导出
    • 搭建导出服务器
    • 命令行导出
    • 导出 Excel 数据文件
  • 图表设计及样式
    • 图表设计及样式
    • 颜色
    • 主题
  • 插件扩展
    • 插件扩展概述
    • 创建插件
    • 提交插件到官方插件库
  • 地图(Highmaps)
    • 开始使用 Highmaps
    • 地图数据集
    • 经纬度
    • 地图导航器
  • 股票图(Highstock)
    • 开始使用 Highstock
    • 范围选择器
    • 导航器
    • 滚动条
    • K 线图
    • 技术指标
    • 自定义技术指标
  • 官方扩展包(Vue React Angular iOS Android .NET)
    • Highcharts .NET
    • Highcharts Vue
    • Highcharts React
    • Highcharts Angular
    • Highcharts iOS
    • Highcharts Android
收起菜单 教程目录

命令行导出

最后修改时间:2017-04-17 14:10

对于需要自动生成图表、纯后端生成图表图片、批量生成图表的情况,Nodejs 导出服务器可以满足这些需求。

一、安装 Nodejs 导出服务器

请参考 搭建导出服务器 进行安装,简单来说有两种安装方式

1、直接安装 npm 包

npm install highcharts-export-server -g

2、源代码安装

git clone https://github.com/highcharts/node-export-server
npm install
npm link

二、命令行导出

Nodejs 导出服务器运行方法:

highcharts-export-server <参数>

通用参数

  • --infile:指定输入的文件
  • --instr:指定输入的内容(JSON 字符串或 SVG 字符串)
  • --options:同 --instr
  • --outfile:指定输出文件
  • --allowFileResources:允许从文件系统中读取内容,默认是 true,当导出服务器以 HTTP 服务运行是该参数无效。
  • --type:指定导出文件的类型,可用的值有:jpg、png、svg、pdf
  • --scale:图表缩放比例
  • --width:指定图表的宽度
  • --constr:生成图表类型,可用的值有 Chart 和 StockChart
  • --callback:指定图表回调函数执行的 js 文件
  • --resources:额外的资源
  • --batch:批量导出,示例:"--batch input.json=output.png;input2.json=output2.png;..."
  • --logDest <路径>:日志文件目录
  • --logFile <文件名>:指定日志文件名(不包含路径),默认是 highcharts-export-server.log。注意需要设置 --logDest参数才能启用日志功能
  • --logLevel <0 ~ 4>:日志级别,0 = 关闭日志,1 = 错误,2 = 警告,3 = 通知,4 = 流水日志
  • --fromFile "options.json":从文件中读取命令行配置
  • --tmpdir:临时目录,用于存储临时的输出文件
  • --workers:线程数
  • --workLimit:phantomjs 工作限制(Phantomjs 运行超过这个次数将会重启)
  • --listenToProcessExits:设置为 0 可以跳过额外的 process.exit 处理步骤。请注意,禁用此操作可能会导致僵尸进程!
  • --globalOptions:传递给 Highcharts.setOptions 的 JSON 字符串

HTTP 服务相关参数:

  • --enableServer <0 或 1>:是否以 HTTP 的形式运行,参数值为 1的时候表示启动 HTTP 服务
  • --host:服务器运行的地址
  • --port:端口号
  • --sslPath:SSL证书地址,表示以提供 HTTPS 协议服务
  • --sslPort:HTTPS 服务端口号
  • --sslOnly:是否只使用 HTTPS 协议
  • --rateLimit:请求限制,表示一分钟允许的最大请求数,默认是关闭这个限制

更多详情请参考 官方文档

1、使用实例

1)将图表配置转换成 PNG 图片

highcharts-export-server --infile options.json --outfile chart.png

options.json 的内容为

{"title":{"text":"不同城市的月平均气温","x":-20},"subtitle":{"text":"数据来源:WorldClimate.com","x":-20},"xAxis":{"categories":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},"yAxis":{"title":{"text":"温度(°C)"},"plotLines":[{"value":0,"width":1,"color":"#808080"}]},"tooltip":{"valueSuffix":"°C"},"legend":{"layout":"vertical","align":"right","verticalAlign":"middle","borderWidth":0},"series":[{"name":"东京","data":[7,6.9,9.5,14.5,18.2,21.5,25.2,26.5,23.3,18.3,13.9,9.6]},{"name":"纽约","data":[-0.2,0.8,5.7,11.3,17,22,24.8,24.1,20.1,14.1,8.6,2.5]},{"name":"柏林","data":[-0.9,0.6,3.5,8.4,13.5,17,18.6,17.9,14.3,9,3.9,1]},{"name":"伦敦","data":[3.9,4.2,5.7,8.5,11.9,15.2,17,16.6,14.2,10.3,6.6,4.8]}]}

2)批量转换

highcharts-export-server -batch "infile1.json=outfile1.png;infile2.json=outfile2.png;infile3.json=outfile3.png;"

2、其他服务端语言调用

其他服务端语言可以通过执行命令的形式来调用 Nodejs 导出服务器,下面是用 Java 和 PHP 进行渲染图表的示例代码:

Java 示例代码

public Class Test {
  public static void main(String[] args) {
    String options = "D:\\test\options.json";

    String cmd = "highcharts-export-server --infile " + options + " --outfile chart.png";

    try {
      Runtime run = Runtime.getRuntime();
      Process p = run.exec(cmd);

      BufferedInputStream in = new BufferedInputStream(p.getInputStream());
      BufferedReader inBr = new BufferedReader(new InputStreamReader( in ));
      String lineStr;

      while ((lineStr = inBr.readLine()) != null) {
        System.out.println(lineStr);
      }

      inBr.close(); in .close();

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

PHP 示例代码

$options = "D:\\test\options.json";
$output = shell_exec("highcharts-export-server --infile ".$options." --outfile chart.png");
echo $output;

三、作为模块在 Nodejs 中使用

Nodejs 导出服务器可以以模块的形式在 Nodejs 程序中使用,下面是简单的示例代码:

// 加载导出模块
const exporter = require('highcharts-export-server');

//导出配置
var exportSettings = {
  type: 'png',
  options: {
    title: {
      text: 'My Chart'
    },
    xAxis: {
      categories: ["Jan", "Feb", "Mar", "Apr", "Mar", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
    },
    series: [{
      type: 'line',
      data: [1, 3, 2, 4]
    }, {
      type: 'line',
      data: [5, 3, 4, 2]
    }]
  }
};

// 启动 Phantomjs 线程池
exporter.initPool();

// 执行导出
exporter.export(exportSettings, function(err, res) {
  //导出的结果包含在 res 中
  //如果导出结果不是 PDF 或 SVG,那么结果是 base64 编码的内容,可以通过 res.data 来获取
  //如果导出结果是 PDF 或 SVG,那么结果是文件名,可以通过 res.filename 来获取

  //当所有的操作完毕后,关掉线程池并推出程序
  exporter.killPool();
  process.exit(1);
});

更多详情请参考 官方文档

版权声明

本教程仅用于学习、研究和交流目的,欢迎非商业转载。转载请注明出处及完整的链接。

标题:命令行导出 | Highcharts 使用教程

链接:https://www.hcharts.cn/docs/render-charts-serverside/

   上一篇 下一篇   
  目录
    简数科技微信,同步更新Highcharts教程

    订阅更新

    © 2022 Highcharts 中文官网, 由 简数科技 提供服务, 浙ICP备16004892号-6, 浙公网安备33011002011664号
    在线客服

    选择服务类型

    技术问题

    • 技术社区
    • 技术支持
    • Q Q 群

    商业授权

    • 使用协议
    • 购买授权
    • 申请试用
    • 授权查询

    图表定制

    • 服务内容
    • VIP 专属服务

    销售服务:    技术服务:

    服务热线:0571 - 8620 8605 / 181 0659 5564    邮件:sales@jianshukeji.com

    服务时间:工作日 9:00 ~ 18:00    紧急服务 :7 x 24 响应(仅限电话)

    重要通知!

    尊敬的用户您好:
    由于域名备案调整,我们将于 2023-01-01 ~ 2023-01-07 日陆续停用 highcharts.com.cn 域名,受影响的网站及域名如下:

    网站或服务名称域名替代的网站
    主站www.highcharts.com.cnwww.hcharts.cn
    静态资源服务/CDNcdn.highcharts.com.cn
    code.highcharts.com.cn
    code.hcharts.cn
    img.highcharts.com.cnimg.hcharts.cn
    API 文档api.highcharts.com.cnapi.hcharts.cn
    导出服务export.highcharts.com.cnexport.hcharts.cn

    以上网站服务及 highcharts.com.cn 域名下的网站将于 2023-01-08 日全部下线,未来一段时间将不可访问,后续我们将上线新的网站。

    如果您的应用中有使用到相关服务,请抓紧时间对链接进行调整(特别是静态资源/CDN 服务的链接),以免影响您的网站或应用的正常运行,由此给您带来的不便,敬请谅解。

    如需帮助,请及时与我们联系:0571-86208605 / 18106595564(微信)。

    简数科技 2022-12-22