报表助手文档

文档创建者:yiboapp
浏览次数:76
最后更新:2025-12-16
报表助手
报表: 文档教程

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1.简介


  • 该应用适用于网页打印场景
  • 支持直接打印、预览报表,模板设计,生成文档
  • 支持开机自启和URL Protocol唤醒
  • 支持多指令、多任务、多线程、多模式
  • 支持ws与wss双协议
  • 软件下载地址:点击下载

2.架构


  • 开发语言:C#
  • 应用框架:.NET FrameWork 4.8
  • 依赖组件:

    • Fleck 1.2
    • Newtonsoft.Json 13.0
    • FastReport 2023.2.4
  • 通信协议:WebStock
  • 通信端口:3676

3.文件说明


  • 安装目录\\ReportHelper.exe 为主应用
  • 安装目录\\ReportDesign.exe 为设计应用
  • 安装目录\\config.ini 为配置文件

4.界面介绍




                               
登录/注册后可看大图
  • 服务
    • 启动服务:程序将开启端口监听与相关服务
    • 停止服务:程序将停止端口监听与停止服务
  • 地址
    • 默认显示本机IP地址
    • 支持127.0.0.1与localhost
    • 点击可复制到剪切板
  • 端口
    • 监听端口号为3676
    • 请确保端口未占用
    • 点击可复制到剪切板
  • 模式
    • 应用模式:需人工自行开启与启动服务
    • 服务模式:开启自启并启动服务且最小化运行
  • 托盘
    • 托盘区内可操作显示界面
    • 应用的退出操作在托盘区内操作

5.配置介绍



配置文件名称:config.ini

配置项默认值说明
schemws协议类型(ws或wss)
server0.0.0.0监听地址
port3676监听端口
pathcertificate.pfx证书路径(wss模式下必填)
password000000证书密码(wss模式下必填)

6.功能介绍

  • 数据交互
    • 采用JSON作为交互格式。
    • 编码统一使用UTF-8
  • 指令字段
    • 字段名称:Instruct
      • 类型:String
      • 描述:指令内容
      • 场景:通用
      • 可选项:
        • print:直接打印
        • view:预览报表
        • design:设计模板
        • document:输出文档
    • 字段名称:name
      • 类型:String
      • 描述:报表名称
      • 场景:通用
    • 字段名称:templates
      • 类型:Array
      • 描述:报表名称
      • 场景:直接打印、预览报表、输出文档
      • 内容项
        • source:
          • 类型:String
          • 描述:数据源
          • 格式:Json=Str;Encoding=utf-8
          • 内容:Str为数据对象JSON编码后Base64编码
        • template
          • 类型:String
          • 描述:模板编码
          • 编码:Base64
    • 字段名称:id
      • 类型:String
      • 描述:模板ID
      • 场景:设计模板
    • 字段名称:source
      • 类型:String
      • 描述:数据源
      • 场景:设计模板
      • 内容:同Templates下source
    • 字段名称:template
      • 类型:String
      • 描述:数据源
      • 场景:设计模板
      • 内容:同templates下template
    • 字段名称:token
      • 类型:String
      • 描述:授权码
      • 场景:直接打印
      • 内容:可为空
  • 回传字段
    • 字段名称:state
      • 类型:String
      • 描述:任务状态
      • 场景:通用
      • 内容项:
        • success:处理成功
        • error:处理失败
    • 字段名称:instruct
      • 类型:String
      • 描述:任务名称
      • 场景:通用
      • 内容项:
        • print:已发送到打印机
        • document:输出文档
        • viewOpen:预览打开
        • designLoad:设计打开
        • designClose:设计关闭
        • designSave:设计保存
    • 字段名称:name
      • 类型:String
      • 描述:报表名称
      • 场景:通用
    • 字段名称:id
      • 类型:String
      • 描述:报表ID
      • 场景:设计模板
    • 字段名称:template
      • 类型:String
      • 描述:模板内容
      • 场景:设计模板
      • 编码:Base64
    • 字段名称:mime
      • 类型:String
      • 描述:文档类型
      • 场景:输出文档
    • 字段名称:str
      • 类型:String
      • 描述:文档类型
      • 场景:输出文档
      • 编码:Base64Blob
  • 交互须知
    • 采用数据源与模板分离模式
    • 在指令下发时数据源与模板应分开传输
    • 指令下发时应用将自动组合数据与模板
    • 设计模式下模板回传将自动剔除数据源区块
    • 模板内容在交互过程中均采用Base64编码
    • 文档模式下将输出Base64编码后的Blob内容

7.交互示例

  • 直接打印
指令内容
  1. {"instruct":"print","name":"Test","templates":[{"source":"Json=eyJjbGFzcyI6eyJ0aXRsZSI6IlJlcG9ydEhlbHBlcjAiLCJsaXN0IjpbMSwyLDNdfX0=;Encoding=utf-8","template":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48UmVwb3J0IFNjcmlwdExhbmd1YWdlPSJDU2hhcnAiIFJlcG9ydEluZm8uQ3JlYXRlZD0iMTAvMTYvMjAyMiAxNjoxMTozMCIgUmVwb3J0SW5mby5Nb2RpZmllZD0iMTAvMjAvMjAyMiAxNjozMjo0MCIgUmVwb3J0SW5mby5DcmVhdG9yVmVyc2lvbj0iMjAyMi4zLjkuMCI+PFJlcG9ydFBhZ2UgTmFtZT0iUGFnZTEiIFdhdGVybWFyay5Gb250PSLlrovkvZMsIDYwcHQiPjxSZXBvcnRUaXRsZUJhbmQgTmFtZT0iUmVwb3J0VGl0bGUxIiBXaWR0aD0iNzE4LjIiIEhlaWdodD0iMzcuOCI+PFRleHRPYmplY3QgTmFtZT0iVGV4dDEiIExlZnQ9IjE1MS4yIiBUb3A9IjkuNDUiIFdpZHRoPSIxODkiIEhlaWdodD0iMTguOSIgVGV4dD0i5rWL6K+VLVtKU09OLml0ZW0uY2xhc3MudGl0bGVdIiBGb250PSLlrovkvZMsIDlwdCIvPjwvUmVwb3J0VGl0bGVCYW5kPjxEYXRhQmFuZCBOYW1lPSJEYXRhMSIgVG9wPSI0MS44IiBXaWR0aD0iNzE4LjIiIEhlaWdodD0iMzcuOCIgU3RhcnROZXdQYWdlPSJ0cnVlIiBEYXRhU291cmNlPSJsaXN0Ij48VGV4dE9iamVjdCBOYW1lPSJUZXh0MiIgTGVmdD0iMTUxLjIiIFRvcD0iOS40NSIgV2lkdGg9IjIxNy4zNSIgSGVpZ2h0PSIxOC45IiBUZXh0PSJbSlNPTi5pdGVtLmNsYXNzLmxpc3QuaXRlbV0iIEZvcm1hdD0iTnVtYmVyIiBGb3JtYXQuVXNlTG9jYWxlPSJ0cnVlIiBGb3JtYXQuRGVjaW1hbERpZ2l0cz0iMiIgSG9yekFsaWduPSJDZW50ZXIiIFdvcmRXcmFwPSJmYWxzZSIgRm9udD0i5a6L5L2TLCA5cHQiIFRyaW1taW5nPSJFbGxpcHNpc0NoYXJhY3RlciIvPjwvRGF0YUJhbmQ+PC9SZXBvcnRQYWdlPjwvUmVwb3J0Pg0K"}]}
复制代码

指令内容
  1. {"state":"success","instruct":"print","name":"Test"}
复制代码

  • 预览报表
指令内容
  1. {"instruct":"view","name":"Test","templates":[{"source":"Json=eyJjbGFzcyI6eyJ0aXRsZSI6IlJlcG9ydEhlbHBlcjAiLCJsaXN0IjpbMSwyLDNdfX0=;Encoding=utf-8","template":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48UmVwb3J0IFNjcmlwdExhbmd1YWdlPSJDU2hhcnAiIFJlcG9ydEluZm8uQ3JlYXRlZD0iMTAvMTYvMjAyMiAxNjoxMTozMCIgUmVwb3J0SW5mby5Nb2RpZmllZD0iMTAvMjAvMjAyMiAxNjozMjo0MCIgUmVwb3J0SW5mby5DcmVhdG9yVmVyc2lvbj0iMjAyMi4zLjkuMCI+PFJlcG9ydFBhZ2UgTmFtZT0iUGFnZTEiIFdhdGVybWFyay5Gb250PSLlrovkvZMsIDYwcHQiPjxSZXBvcnRUaXRsZUJhbmQgTmFtZT0iUmVwb3J0VGl0bGUxIiBXaWR0aD0iNzE4LjIiIEhlaWdodD0iMzcuOCI+PFRleHRPYmplY3QgTmFtZT0iVGV4dDEiIExlZnQ9IjE1MS4yIiBUb3A9IjkuNDUiIFdpZHRoPSIxODkiIEhlaWdodD0iMTguOSIgVGV4dD0i5rWL6K+VLVtKU09OLml0ZW0uY2xhc3MudGl0bGVdIiBGb250PSLlrovkvZMsIDlwdCIvPjwvUmVwb3J0VGl0bGVCYW5kPjxEYXRhQmFuZCBOYW1lPSJEYXRhMSIgVG9wPSI0MS44IiBXaWR0aD0iNzE4LjIiIEhlaWdodD0iMzcuOCIgU3RhcnROZXdQYWdlPSJ0cnVlIiBEYXRhU291cmNlPSJsaXN0Ij48VGV4dE9iamVjdCBOYW1lPSJUZXh0MiIgTGVmdD0iMTUxLjIiIFRvcD0iOS40NSIgV2lkdGg9IjIxNy4zNSIgSGVpZ2h0PSIxOC45IiBUZXh0PSJbSlNPTi5pdGVtLmNsYXNzLmxpc3QuaXRlbV0iIEZvcm1hdD0iTnVtYmVyIiBGb3JtYXQuVXNlTG9jYWxlPSJ0cnVlIiBGb3JtYXQuRGVjaW1hbERpZ2l0cz0iMiIgSG9yekFsaWduPSJDZW50ZXIiIFdvcmRXcmFwPSJmYWxzZSIgRm9udD0i5a6L5L2TLCA5cHQiIFRyaW1taW5nPSJFbGxpcHNpc0NoYXJhY3RlciIvPjwvRGF0YUJhbmQ+PC9SZXBvcnRQYWdlPjwvUmVwb3J0Pg0K"}]}
复制代码

回传内容
  1. {"state":"success","instruct":"viewOpen","name":"Test"}
复制代码

  • 设计模板
  • 指令内容


  1. {"instruct":"design","id":2,"name":"Test","source":"Json=eyJjbGFzcyI6eyJ0aXRsZSI6IlJlcG9ydEhlbHBlcjAiLCJsaXN0IjpbMSwyLDNdfX0=;Encoding=utf-8","template":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48UmVwb3J0IFNjcmlwdExhbmd1YWdlPSJDU2hhcnAiIFJlcG9ydEluZm8uQ3JlYXRlZD0iMTAvMTYvMjAyMiAxNjoxMTozMCIgUmVwb3J0SW5mby5Nb2RpZmllZD0iMTAvMjAvMjAyMiAxNjozMjo0MCIgUmVwb3J0SW5mby5DcmVhdG9yVmVyc2lvbj0iMjAyMi4zLjkuMCI+PFJlcG9ydFBhZ2UgTmFtZT0iUGFnZTEiIFdhdGVybWFyay5Gb250PSLlrovkvZMsIDYwcHQiPjxSZXBvcnRUaXRsZUJhbmQgTmFtZT0iUmVwb3J0VGl0bGUxIiBXaWR0aD0iNzE4LjIiIEhlaWdodD0iMzcuOCI+PFRleHRPYmplY3QgTmFtZT0iVGV4dDEiIExlZnQ9IjE1MS4yIiBUb3A9IjkuNDUiIFdpZHRoPSIxODkiIEhlaWdodD0iMTguOSIgVGV4dD0i5rWL6K+VLVtKU09OLml0ZW0uY2xhc3MudGl0bGVdIiBGb250PSLlrovkvZMsIDlwdCIvPjwvUmVwb3J0VGl0bGVCYW5kPjxEYXRhQmFuZCBOYW1lPSJEYXRhMSIgVG9wPSI0MS44IiBXaWR0aD0iNzE4LjIiIEhlaWdodD0iMzcuOCIgU3RhcnROZXdQYWdlPSJ0cnVlIiBEYXRhU291cmNlPSJsaXN0Ij48VGV4dE9iamVjdCBOYW1lPSJUZXh0MiIgTGVmdD0iMTUxLjIiIFRvcD0iOS40NSIgV2lkdGg9IjIxNy4zNSIgSGVpZ2h0PSIxOC45IiBUZXh0PSJbSlNPTi5pdGVtLmNsYXNzLmxpc3QuaXRlbV0iIEZvcm1hdD0iTnVtYmVyIiBGb3JtYXQuVXNlTG9jYWxlPSJ0cnVlIiBGb3JtYXQuRGVjaW1hbERpZ2l0cz0iMiIgSG9yekFsaWduPSJDZW50ZXIiIFdvcmRXcmFwPSJmYWxzZSIgRm9udD0i5a6L5L2TLCA5cHQiIFRyaW1taW5nPSJFbGxpcHNpc0NoYXJhY3RlciIvPjwvRGF0YUJhbmQ+PC9SZXBvcnRQYWdlPjwvUmVwb3J0Pg0K"}
复制代码

设计打开
  1. {"state":"success","instruct":"designLoad","id":"2","name":"Test"}
复制代码

模板回传
  1. {"state":"success","instruct":"designSave","id":"2","name":"Test","template":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48UmVwb3J0IFNjcmlwdExhbmd1YWdlPSJDU2hhcnAiIFJlcG9ydEluZm8uQ3JlYXRlZD0iMTAvMTYvMjAyMiAxNjoxMTozMCIgUmVwb3J0SW5mby5Nb2RpZmllZD0iMTAvMjAvMjAyMiAxNzoyNjowOSIgUmVwb3J0SW5mby5DcmVhdG9yVmVyc2lvbj0iMjAyMi4zLjkuMCI+PFJlcG9ydFBhZ2UgTmFtZT0iUGFnZTEiIFdhdGVybWFyay5Gb250PSLlrovkvZMsIDYwcHQiPjxSZXBvcnRUaXRsZUJhbmQgTmFtZT0iUmVwb3J0VGl0bGUxIiBXaWR0aD0iNzE4LjIiIEhlaWdodD0iMzcuOCI+PFRleHRPYmplY3QgTmFtZT0iVGV4dDEiIExlZnQ9IjE4OSIgVG9wPSI5LjQ1IiBXaWR0aD0iMTg5IiBIZWlnaHQ9IjE4LjkiIFRleHQ9Iua1i+ivlS1bSlNPTi5pdGVtLmNsYXNzLnRpdGxlXSIgRm9udD0i5a6L5L2TLCA5cHQiLz48L1JlcG9ydFRpdGxlQmFuZD48RGF0YUJhbmQgTmFtZT0iRGF0YTEiIFRvcD0iNDEuOCIgV2lkdGg9IjcxOC4yIiBIZWlnaHQ9IjM3LjgiIFN0YXJ0TmV3UGFnZT0idHJ1ZSIgRGF0YVNvdXJjZT0ibGlzdCI+PFRleHRPYmplY3QgTmFtZT0iVGV4dDIiIExlZnQ9IjE1MS4yIiBUb3A9IjkuNDUiIFdpZHRoPSIyMTcuMzUiIEhlaWdodD0iMTguOSIgVGV4dD0iW0pTT04uaXRlbS5jbGFzcy5saXN0Lml0ZW1dIiBGb3JtYXQ9Ik51bWJlciIgRm9ybWF0LlVzZUxvY2FsZT0idHJ1ZSIgRm9ybWF0LkRlY2ltYWxEaWdpdHM9IjIiIEhvcnpBbGlnbj0iQ2VudGVyIiBXb3JkV3JhcD0iZmFsc2UiIEZvbnQ9IuWui+S9kywgOXB0IiBUcmltbWluZz0iRWxsaXBzaXNDaGFyYWN0ZXIiLz48L0RhdGFCYW5kPjwvUmVwb3J0UGFnZT48L1JlcG9ydD4NCg=="}
复制代码

设计关闭
  1. {"state":"success","instruct":"designClose","id":"2","name":"Test"}
复制代码

  • 输出文档
指令内容
  1. {"instruct":"document","name":"Test","templates":[{"source":"Json=eyJjbGFzcyI6eyJ0aXRsZSI6IlJlcG9ydEhlbHBlcjAiLCJsaXN0IjpbMSwyLDNdfX0=;Encoding=utf-8","template":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48UmVwb3J0IFNjcmlwdExhbmd1YWdlPSJDU2hhcnAiIFJlcG9ydEluZm8uQ3JlYXRlZD0iMTAvMTYvMjAyMiAxNjoxMTozMCIgUmVwb3J0SW5mby5Nb2RpZmllZD0iMTAvMjAvMjAyMiAxNzoyNjowOSIgUmVwb3J0SW5mby5DcmVhdG9yVmVyc2lvbj0iMjAyMi4zLjkuMCI+PFJlcG9ydFBhZ2UgTmFtZT0iUGFnZTEiIFdhdGVybWFyay5Gb250PSLlrovkvZMsIDYwcHQiPjxSZXBvcnRUaXRsZUJhbmQgTmFtZT0iUmVwb3J0VGl0bGUxIiBXaWR0aD0iNzE4LjIiIEhlaWdodD0iMzcuOCI+PFRleHRPYmplY3QgTmFtZT0iVGV4dDEiIExlZnQ9IjE4OSIgVG9wPSI5LjQ1IiBXaWR0aD0iMTg5IiBIZWlnaHQ9IjE4LjkiIFRleHQ9Iua1i+ivlS1bSlNPTi5pdGVtLmNsYXNzLnRpdGxlXSIgRm9udD0i5a6L5L2TLCA5cHQiLz48L1JlcG9ydFRpdGxlQmFuZD48RGF0YUJhbmQgTmFtZT0iRGF0YTEiIFRvcD0iNDEuOCIgV2lkdGg9IjcxOC4yIiBIZWlnaHQ9IjM3LjgiIFN0YXJ0TmV3UGFnZT0idHJ1ZSIgRGF0YVNvdXJjZT0ibGlzdCI+PFRleHRPYmplY3QgTmFtZT0iVGV4dDIiIExlZnQ9IjE1MS4yIiBUb3A9IjkuNDUiIFdpZHRoPSIyMTcuMzUiIEhlaWdodD0iMTguOSIgVGV4dD0iW0pTT04uaXRlbS5jbGFzcy5saXN0Lml0ZW1dIiBGb3JtYXQ9Ik51bWJlciIgRm9ybWF0LlVzZUxvY2FsZT0idHJ1ZSIgRm9ybWF0LkRlY2ltYWxEaWdpdHM9IjIiIEhvcnpBbGlnbj0iQ2VudGVyIiBXb3JkV3JhcD0iZmFsc2UiIEZvbnQ9IuWui+S9kywgOXB0IiBUcmltbWluZz0iRWxsaXBzaXNDaGFyYWN0ZXIiLz48L0RhdGFCYW5kPjwvUmVwb3J0UGFnZT48L1JlcG9ydD4NCg=="}]}
复制代码

回传内容
  1. {{"state":"success","instruct":"document","name":"Test","mime":"application/pdf","str":"base64..."}
复制代码

8.JavaScript 示例
  • 示例代码
  • SDK依赖于js-base64,下载地址:点击下载
  • SDK实际使用应参考示例完成业务逻辑

  1. import { Base64 } from \'js-base64\';
  2. //报表助手
  3. const helper = {
  4.     token:\'\',
  5.     ver: \'1.3.2.4\',
  6.     ip: \'127.0.0.1\',
  7.     port: \'3676\',
  8.     ws: null,
  9.     task: {},
  10.     //创建连接
  11.     connect() {
  12.         return new Promise((resolve, reject) => {
  13.             if (this.ws && this.ws.readyState == WebSocket.OPEN) {
  14.                 resolve();
  15.             } else {
  16.                 try {
  17.                     this.ws = new WebSocket(\'ws://\' + this.ip + \':\' + this.port);
  18.                     this.ws.onmessage = (e) => this.message(e);
  19.                     this.ws.onopen = () => resolve();
  20.                     this.ws.onerror = () => reject();
  21.                     this.ws.onclose = () => {
  22.                         this.ws = null;
  23.                         this.task = {};
  24.                     };
  25.                 } catch {
  26.                     reject();
  27.                 }
  28.             }
  29.         });
  30.     },
  31.     //直接打印
  32.     print(name, templates) {
  33.         if (this.ws && this.ws.readyState == WebSocket.OPEN) {
  34.             let msg = {
  35.                 instruct: \'print\',
  36.                 name: name,
  37.                 token:this.token,
  38.                 templates: templates.map((row) => {
  39.                     return {
  40.                         source: \'Json=\' + Base64.encode(JSON.`string`ify(row.source)) + \';Encoding=utf-8\',
  41.                         template: row.template
  42.                     };
  43.                 })
  44.             };
  45.             this.ws.send(JSON.stringify(msg));
  46.         } else {
  47.             throw Error(\'ReportHelper Not connected\');
  48.         }
  49.     },
  50.     //预览打印
  51.     view(name, templates) {
  52.         if (this.ws && this.ws.readyState == WebSocket.OPEN) {
  53.             let msg = {
  54.                 instruct: \'view\',
  55.                 name: name,
  56.                 templates: templates.map((row) => {
  57.                     return {
  58.                         source: \'Json=\' + Base64.encode(JSON.stringify(row.source)) + \';Encoding=utf-8\',
  59.                         template: row.template
  60.                     };
  61.                 })
  62.             };
  63.             this.ws.send(JSON.stringify(msg));
  64.         } else {
  65.             throw Error(\'ReportHelper Not connected\');
  66.         }
  67.     },
  68.     //文档预览
  69.     document(name, templates) {
  70.         if (this.ws && this.ws.readyState == WebSocket.OPEN) {
  71.             let msg = {
  72.                 instruct: \'document\',
  73.                 name: name,
  74.                 templates: templates.map((row) => {
  75.                     return {
  76.                         source: \'Json=\' + Base64.encode(JSON.stringify(row.source)) + \';Encoding=utf-8\',
  77.                         template: row.template
  78.                     };
  79.                 })
  80.             };
  81.             this.ws.send(JSON.stringify(msg));
  82.         } else {
  83.             throw Error(\'ReportHelper Not connected\');
  84.         }
  85.     },
  86.     //模板设计
  87.     design(id, name, param, template, fun) {
  88.         if (this.ws && this.ws.readyState == WebSocket.OPEN) {
  89.             let msg = {
  90.                 instruct: \'design\',
  91.                 id: id,
  92.                 name: name,
  93.                 source: \'Json=\' + Base64.encode(JSON.stringify(param)) + \';Encoding=utf-8\',
  94.                 template: template
  95.             };
  96.             this.task[\'design_\' + id] = fun;
  97.             this.ws.send(JSON.stringify(msg));
  98.         } else {
  99.             throw Error(\'ReportHelper Not connected\');
  100.         }
  101.     },
  102.     //消息处理
  103.     message(e) {
  104.         try {
  105.             let result = JSON.parse(e.data);
  106.             if (result.state == \'success\') {
  107.                 //设计保存
  108.                 result.instruct == \'designSave\' && this.task[\'design_\' + result.id](result.id, result.name, result.template);
  109.                 //设计关闭
  110.                 result.instruct == \'designClose\' && delete this.task[\'design_\' + result.id];
  111.                 //输出文档
  112.                 if (result.instruct == \'document\') {
  113.                     let ua = Base64.toUint8Array(result.str);
  114.                     let blob = new Blob([ua], { type: result.mime });
  115.                     window.open(URL.createObjectURL(blob));
  116.                 }
  117.             } else {
  118.                 //错误回调
  119.                 alert(result.message);
  120.             }
  121.         } catch (e) {
  122.             alert(e);
  123.         }
  124.     },
  125.     //错误处理
  126.     error: () => {
  127.         console.log(\'ReportHelper Connect Error\');
  128.     }
  129. };
  130. export default helper;
复制代码

  • 调用方法
直接打印
  1. helper.token="";
  2. helper.connect().then(() => {
  3.     helper.print("Test", [{ source:{title: "ReportHelper" },template:"str"}]);
  4. }).catch(()=>{});
复制代码

预览报表
  1. helper.connect().then(() => {
  2.     helper.view("Test", [{ source:{title: "ReportHelper" },template:"str"}]);
  3. }).catch(()=>{});
复制代码

输出文档
  1. helper.connect().then(() => {
  2.     helper.design("1", "Test", {title: "ReportHelper" }, template, (id, name, template) => {
  3.         console.log(id, name, template);
  4.     });
  5. }).catch(()=>{});
复制代码

输出文档
  1. helper.connect().then(() => {
  2.     helper.document("Test", [{ source:{title: "ReportHelper" },template:"str"}]);
  3. }).catch(()=>{});
复制代码

9.杂项

  • URL Protocol唤醒:ReportHelper://run
  • 命令参数
    • run 开启服务
    • serve 开启服务并最小化
10.参考



来源: 报表助手文档
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则