npm package: @icreate/ics-chromely-plugin-report-js-sdk
Description: 提供报表设计、清空、预览、打印、注册数据源等功能
Author: wenbei421
Latest version: 0.0.11

<!--
 * @Author: 文贝
 * @Date: 2022-02-08 21:36:57
 * @LastEditors: 陶慧灵
 * @LastEditTime: 2022-12-13 13:39:23
 * @Descripttion: 
 * @FilePath: \ics-chromely-plugin-report\README.md
-->
### Usage

```bash
npm i @icreate/ics-chromely-plugin-report-js-sdk
```

### Features
```
0.0.11 打印增加显示进度入参
0.0.11 打印增加显示设置入参
0.0.9-beta.1 注册数据源时允许指定字段类型
0.0.9 优化和完善导出pdf流
0.0.8-beta.1 增加导出pdf流示例
0.0.8 增加导出pdf流支持
0.0.7 修复打印和准备打印方法调用不传打印机名称时使用默认打印机
0.0.6 修改print和printPrepared的printerName允许为空
0.0.5 增加打印准备报表printPrepared
0.0.4 增加预览准备报表showPrepared
0.0.3  将注册数据源数据转为为json字符串
```

 - ReportHelper:报表


### Importing library

You can import the generated bundle to use the whole library generated by this starter:

```javascript
import ReportHelper from '@icreate/ics-chromely-plugin-report-js-sdk'
```

### ReportHelper

```javascript
  // 指定文件加载报表
   load(fileName: string): Promise<any> 
  // 根据内容加载报表
   loadFromString(content: string): Promise<any>
 // 清空数据源
   clearData(): Promise<any> 
  // 注册数据源
   registerData(name: string, data: Array<any>): Promise<any>
  // 设置双面打印
   doublePass(value: Boolean): Promise<any>
  // 准备报表
   prepare(append: Boolean): Promise<any>
  // 添加参数
   addParameter(name: string, value: string): Promise<any>
  // 设计报表
   design(): Promise<any> 
  // 预览报表
   show(): Promise<any>
  // 预览准备报表
   showPrepared(): Promise<any>
  // 打印报表
   print(printerName?: string, showPrintSettings?: boolean, showProgress?: boolean): Promise<any> 
  // 打印准备报表
   printPrepared(printerName?: string): Promise<any>
  //  导出pdf:文件名称，如果不传则返回流
   ExportToPdf(fileName: string): Promise<any> 
  //  导出html
   exportToHtml(fileName: string): Promise<any> 
  // 释放报表
   dispose(): Promise<any>
```

### 一般设计打印示例

```javascript
  const reportHelper = new ReportHelper()
  await reportHelper.clearData()
  await reportHelper.load('xxxx.frx')
  await reportHelper.registerData('患者基本信息',[{ id:"1",name:"张三"}])
  await reportHelper.design() //设计报表
  await reportHelper.show() //预览报表
  await reportHelper.print() //打印报表

```

### 指定字段类型示例

```javascript
  const reportHelper = new ReportHelper()
  await reportHelper.clearData()
  await reportHelper.load('xxxx.frx')
  //指定数据源中字段对应的类型，{id:"string",name:"string", birthday: "date"}
  //可指定 string|bool|date|datetime|decimal|double|float|int|long|object|short
  //格式: {"id":"string","flag":"int","birthday":"date","total":"decimal"}
  await reportHelper.registerData('患者基本信息',[{ id:"1",name:"张三",birthday:"1988-05-26"}],{id:"string",name:"string", birthday: "date"})
  await reportHelper.design() //设计报表
  await reportHelper.show() //预览报表
  await reportHelper.print() //打印报表

```
#### 字段类型说明
| 类型 | 描述 | 范围 | 默认值 |
| --- | --- | --- | --- |
| bool | 布尔值 | True 或 False | FALSE |
| byte | 8 位无符号整数 | 0 到 255 | 0 |
| char | 16 位 Unicode 字符 | U +0000 到 U +ffff | '\\0' |
| decimal | 128 位精确的十进制值，28-29 有效位数 | (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 | 0.0M |
| double | 64 位双精度浮点型 | (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 | 0.0D |
| float | 32 位单精度浮点型 | -3.4 x 1038 到 + 3.4 x 1038 | 0.0F |
| int | 32 位有符号整数类型 | -2,147,483,648 到 2,147,483,647 | 0 |
| long | 64 位有符号整数类型 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0L |
| sbyte | 8 位有符号整数类型 | -128 到 127 | 0 |
| short | 16 位有符号整数类型 | -32,768 到 32,767 | 0 |
| uint | 32 位无符号整数类型 | 0 到 4,294,967,295 | 0 |
| ulong | 64 位无符号整数类型 | 0 到 18,446,744,073,709,551,615 | 0 |
| ushort | 16 位无符号整数类型 | 0 到 65,535 | 0 |
| date | 日期 | 0001/1/1 00:00:00到9999/12/31 00:00:00之间 | 0001/1/1 0:00:00 |
| datetime | 日期时间 | 0001/1/1 00:00:00到9999/12/31 23:59:59之间 | 0001/1/1 0:00:00 |


### 合并打印示例

```javascript
  const reportHelper = new ReportHelper()
  //加载报表1
  await reportHelper.clearData()
  await reportHelper.load('xxxx.frx')
  await reportHelper.registerData('患者基本信息',[{ id:"1",name:"张三"}])
  await reportHelper.prepare(false)
  //加载报表2
  await reportHelper.clearData()
  await reportHelper.load('xxxx.frx')
  await reportHelper.registerData('患者基本信息',[{ id:"1",name:"李四"}])
  await reportHelper.prepare(true)
  await reportHelper.showPrepared() //预览准备报表
  await reportHelper.printPrepared() //打印准备报表
```

### 导出pdf流示例
```javascript
  const reportHelper = new ReportHelper()
  await reportHelper.clearData()
  await reportHelper.load('xxxx.frx')
  await reportHelper.registerData('患者基本信息', [
    { id: '1', name: '张三' }
  ])
  await reportHelper.prepare(true)
  const blob = await reportHelper.ExportToPdf() // 设计报表
  //直接使用blob展示[vue-pdf-embed](https://github.com/hrynko/vue-pdf-embed)  
  const source = await blob.arrayBuffer()
  console.log(source, 'arrayBuffer')
  //生成pdf内存url
  const source = URL.createObjectURL(blob)
  console.log(source, 'url')
```