realreport 1.8.5 → 1.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,7 +10,7 @@ RealReport 사용하려면 반드시 제품 [라이선스](https://real-report.c
10
10
 
11
11
  라이선스 발급 사이트를 통해 다운로드 받은 제품패키지 파일의 압축을 풀면 아래와 같이 realreport 라이브러리 파일과 차트 및 PDF 내보내기를 위한 외부 라이브러리를 포함하고 있습니다.
12
12
 
13
- ```sh title="realreport.latest.zip"
13
+ ```sh title="realreport.latest.zip"
14
14
  highcharts
15
15
  LICENSE.md
16
16
  pdffonts
@@ -33,19 +33,18 @@ RealReport 사용하려면 반드시 제품 [라이선스](https://real-report.c
33
33
 
34
34
  HTML에서 RealReport를 사용하려면 `<script>` 태그를 이용해 RealReport의 JavaScript 버전을 포함해 주어야 합니다. `realreport.js` 파일은 다운받은 패키지에 포함되어 있습니다.
35
35
 
36
-
37
36
  ```html
38
- <script src='js/realreport.js'></script>
37
+ <script src="js/realreport.js"></script>
39
38
  ```
40
39
 
41
40
  realreport.js 파일과 함께 들어 있는 style 파일인 `realreport.css` 도 head 부분에 포함해 줍니다.
42
41
 
43
42
  ```html title="index.html"
44
43
  <html>
45
- <head>
46
- <link href='js/realreport.css' rel='stylesheet' />
47
- <script src='js/realreport.js'></script>
48
- </head>
44
+ <head>
45
+ <link href="js/realreport.css" rel="stylesheet" />
46
+ <script src="js/realreport.js"></script>
47
+ </head>
49
48
  </html>
50
49
  ```
51
50
 
@@ -55,12 +54,12 @@ RealReport의 라이선스를 javascript 파일로 다운받은 경우 라이선
55
54
 
56
55
  ```html title="index.html"
57
56
  <html>
58
- <head>
59
- <!-- RealReport 라이브러리 및 라이선스 파일 포함하기 -->
60
- <link href='js/realreport.css' rel='stylesheet' />
61
- <script src='js/realreport-lic.js'></script>
62
- <script src='js/realreport.js'></script>
63
- </head>
57
+ <head>
58
+ <!-- RealReport 라이브러리 및 라이선스 파일 포함하기 -->
59
+ <link href="js/realreport.css" rel="stylesheet" />
60
+ <script src="js/realreport-lic.js"></script>
61
+ <script src="js/realreport.js"></script>
62
+ </head>
64
63
  </html>
65
64
  ```
66
65
 
@@ -70,16 +69,16 @@ RealReport는 [Highcharts](https://www.highcharts.com/)와 협의를 통해 Hich
70
69
 
71
70
  ```html title="index.html"
72
71
  <html>
73
- <head>
74
- <!-- 하이차트 코드 포함 하기 -->
75
- <link href='js/highchart/highcharts.css' rel='stylesheet' />
76
- <script src="js/highchart/highcharts.js"></script>
77
- <script src="js/highchart/highcharts-more.js"></script>
78
-
79
- <link href='js/realreport.css' rel='stylesheet' />
80
- <script src='js/realreport-lic.js'></script>
81
- <script src='js/realreport.js'></script>
82
- </head>
72
+ <head>
73
+ <!-- 하이차트 코드 포함 하기 -->
74
+ <link href="js/highchart/highcharts.css" rel="stylesheet" />
75
+ <script src="js/highchart/highcharts.js"></script>
76
+ <script src="js/highchart/highcharts-more.js"></script>
77
+
78
+ <link href="js/realreport.css" rel="stylesheet" />
79
+ <script src="js/realreport-lic.js"></script>
80
+ <script src="js/realreport.js"></script>
81
+ </head>
83
82
  </html>
84
83
  ```
85
84
 
@@ -89,18 +88,18 @@ RealReport의 강력한 내보내기 기능중 하나인 PDF 내보내기 기능
89
88
 
90
89
  ```html title="index.html"
91
90
  <html>
92
- <head>
93
- <link href='js/highchart/highcharts.css' rel='stylesheet' />
94
- <script src="js/highchart/highcharts.js"></script>
95
- <script src="js/highchart/highcharts-more.js"></script>
96
-
97
- <!-- PDF 라이브러리 포함 하기 -->
98
- <script src="js/pdfkit.js"></script>
99
-
100
- <link href='js/realreport.css' rel='stylesheet' />
101
- <script src='js/realreport-lic.js'></script>
102
- <script src='js/realreport.js'></script>
103
- </head>
91
+ <head>
92
+ <link href="js/highchart/highcharts.css" rel="stylesheet" />
93
+ <script src="js/highchart/highcharts.js"></script>
94
+ <script src="js/highchart/highcharts-more.js"></script>
95
+
96
+ <!-- PDF 라이브러리 포함 하기 -->
97
+ <script src="js/pdfkit.js"></script>
98
+
99
+ <link href="js/realreport.css" rel="stylesheet" />
100
+ <script src="js/realreport-lic.js"></script>
101
+ <script src="js/realreport.js"></script>
102
+ </head>
104
103
  </html>
105
104
  ```
106
105
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- RealReport v1.8.5
2
+ RealReport v1.8.7
3
3
  Copyright (C) 2013-2024 WooriTech Inc.
4
4
  All Rights Reserved.
5
5
  */
@@ -1,7 +1,7 @@
1
1
  /// <reference types="pdfkit" />
2
2
  /**
3
- * RealReport v1.8.5
4
- * commit d6bffa0
3
+ * RealReport v1.8.7
4
+ * commit e8f372d
5
5
 
6
6
  * Copyright (C) 2013-2024 WooriTech Inc.
7
7
  https://real-report.com
@@ -9,10 +9,10 @@
9
9
  */
10
10
 
11
11
  /**
12
- * RealReport Core v1.8.5
12
+ * RealReport Core v1.8.7
13
13
  * Copyright (C) 2013-2024 WooriTech Inc.
14
14
  * All Rights Reserved.
15
- * commit d77f855778c98d11c8607fac13d8b71178f4edfc
15
+ * commit 2aaf9cc3a7145340f2496410f5c04ecff548ded0
16
16
  */
17
17
  type ConfigObject$1 = {
18
18
  [key: string]: any;
@@ -2474,6 +2474,7 @@ declare abstract class DataBand extends ReportGroupItem {
2474
2474
  * master band.
2475
2475
  */
2476
2476
  get master(): DataBand;
2477
+ set master(band: DataBand);
2477
2478
  /**
2478
2479
  * band level.
2479
2480
  * 최상위 band이면 0.
@@ -2716,18 +2717,22 @@ declare abstract class DataBand extends ReportGroupItem {
2716
2717
  */
2717
2718
  declare class DataBandCollection extends ReportGroupItem {
2718
2719
  static readonly PROPINFOS: IPropInfo[];
2720
+ static readonly CHILD_PROPS: IPropInfo[];
2719
2721
  static readonly $_ctor: string;
2720
2722
  private _owner;
2721
2723
  private _label;
2722
2724
  constructor(owner: DataBand, label: string);
2723
2725
  /** owner */
2724
2726
  get owner(): DataBand;
2727
+ protected _getChildPropInfos(item: ReportItem): IPropInfo[];
2725
2728
  getSaveType(): string;
2726
2729
  get outlineLabel(): string;
2727
2730
  get designLevel(): number;
2728
2731
  get marqueeParent(): ReportItem;
2732
+ protected _doLoadChild(child: ReportItem, src: any): void;
2729
2733
  canAdd(item: ReportItem): boolean;
2730
2734
  canContainsBand(): boolean;
2735
+ canContainsBandGroup(): boolean;
2731
2736
  protected _doItemAdded(item: ReportItem, index: number): void;
2732
2737
  }
2733
2738
 
@@ -3410,8 +3415,61 @@ declare class ReportElement extends VisualElement$1 {
3410
3415
  protected _doPrint(doc: Document, ctx: PrintContext): void;
3411
3416
  }
3412
3417
 
3413
- /**
3414
- */
3418
+ declare class BandGroup extends ReportGroupItem {
3419
+ static readonly PROP_BAND_COUNT = "bandCount";
3420
+ static readonly PROP_BAND_GAP = "bandGap";
3421
+ static readonly PROP_NO_SPLIT = "noSplit";
3422
+ static readonly PROP_DIRECTION = "direction";
3423
+ static readonly PROPINFOS: IPropInfo[];
3424
+ static readonly STYLE_PROPS: any[];
3425
+ static readonly $_ctor: string;
3426
+ static readonly ITEM_TYPE = "Band Group";
3427
+ private _bandGap;
3428
+ private _noSplit;
3429
+ private _direction;
3430
+ private _master;
3431
+ constructor(name: string);
3432
+ /**
3433
+ * band count.
3434
+ */
3435
+ get bandCount(): number;
3436
+ set bandCount(value: number);
3437
+ /**
3438
+ * gap between bands.
3439
+ */
3440
+ get bandGap(): number;
3441
+ set bandGap(value: number);
3442
+ /**
3443
+ * 밴드그룹 설정 방향
3444
+ */
3445
+ get direction(): Direction;
3446
+ set direction(value: Direction);
3447
+ /**
3448
+ * true면 밴드 아이템 전체 높이가 출력 페이지의 남은 높이 보다 클 경우 다음 페이지에 출력한다. #612
3449
+ */
3450
+ get noSplit(): boolean;
3451
+ set noSplit(value: boolean);
3452
+ /**
3453
+ * master band.
3454
+ */
3455
+ get master(): DataBand;
3456
+ set master(band: DataBand);
3457
+ /**
3458
+ * @internal
3459
+ * ReportPage에서 bodyItems를 통해 호출한다.
3460
+ */
3461
+ loadProps(src: any): void;
3462
+ getBandItem(index: number): DataBand | undefined;
3463
+ getSaveType(): string;
3464
+ get outlineLabel(): string;
3465
+ protected _getEditProps(): IPropInfo[];
3466
+ protected _getStyleProps(): string[];
3467
+ protected _doLoad(loader: IReportLoader, src: any): void;
3468
+ protected _doSave(target: object): void;
3469
+ canAdd(item: ReportItem): boolean;
3470
+ private $_resetCells;
3471
+ }
3472
+
3415
3473
  declare class BandCollectionElement extends ReportGroupItemElement<DataBandCollection> {
3416
3474
  constructor(doc: Document, model: DataBandCollection);
3417
3475
  protected _doDispose(): void;
@@ -3582,9 +3640,11 @@ declare abstract class BandElement<T extends DataBand> extends ReportGroupItemEl
3582
3640
  abstract addMasterRow(page: HTMLDivElement, headerView: any, rowView: any, x: number, y: number): number;
3583
3641
  abstract prepareAsync(doc: Document, ctx: PrintContext, width: number, subRows: number[], masterRow: number): BandPrintInfo<any>;
3584
3642
  abstract prepareSubBand(doc: Document, ctx: PrintContext, width: number, dataRows: number[]): BandPrintInfo<any>;
3585
- protected _prepareDetail(doc: Document, ctx: PrintContext, band: DataBand, details: DataBandCollection, detailViews: BandCollectionElement, r: number, rows: BandPrintRow[], width: number): void;
3643
+ protected _prepareDetail(doc: Document, ctx: PrintContext, band: DataBand, details: DataBandCollection, detailViews: BandCollectionElement, masterBandRow: number, rows: BandPrintRow[], width: number): void;
3586
3644
  protected _getNext(item: ReportItemView): ReportItemView;
3587
3645
  protected _getPrev(item: ReportItemView): ReportItemView;
3646
+ private $_prepareDetailDataBand;
3647
+ private $_prepareDetailBandGroup;
3588
3648
  }
3589
3649
 
3590
3650
  /**
@@ -3696,6 +3756,14 @@ declare abstract class TableElement<T extends TableBase> extends ReportGroupItem
3696
3756
  private $_layoutViewInCell;
3697
3757
  protected _findCell(model: TableCellItem): TableCellElementBase;
3698
3758
  createColGroup(doc: Document, width: number): HTMLTableColElement;
3759
+ /**
3760
+ * 셀 높이를 계산하여 반환한다. (모델 값만으로 계산)
3761
+ *
3762
+ * @param cell
3763
+ * @param rowHeightPixels 모든 행의 px 높이가 담긴 배열 (행 높이가 설정되어 있지 않은 경우 NaN)
3764
+ * @returns 셀 높이 (row 높이가 고정되어 있지 않고, 컨텐츠에 따라 늘어나는 경우는 undefined를 반환한다.)
3765
+ */
3766
+ private $_calcCellHeight;
3699
3767
  }
3700
3768
 
3701
3769
  declare class CrosstabFieldHeader extends ReportItem {
@@ -6466,6 +6534,7 @@ declare class TableBandGroupSectionElement<T extends TableBandRowGroupSection> e
6466
6534
  }
6467
6535
  interface ITableGroupPrintInfo extends IGroupPrintInfo {
6468
6536
  view: TableBandGroupSectionElement<TableBandRowGroupHeader | TableBandRowGroupFooter>;
6537
+ needNextPage: boolean;
6469
6538
  }
6470
6539
  type TableBandPrintRow = BandPrintRow | ITableGroupPrintInfo;
6471
6540
 
@@ -6481,54 +6550,6 @@ interface ISimpleGroupPrintInfo extends IGroupPrintInfo {
6481
6550
  }
6482
6551
  type SimpleBandPrintRow = BandPrintRow | ISimpleGroupPrintInfo;
6483
6552
 
6484
- declare class BandGroup extends ReportGroupItem {
6485
- static readonly PROP_BAND_COUNT = "bandCount";
6486
- static readonly PROP_BAND_GAP = "bandGap";
6487
- static readonly PROP_NO_SPLIT = "noSplit";
6488
- static readonly PROP_DIRECTION = "direction";
6489
- static readonly PROPINFOS: IPropInfo[];
6490
- static readonly STYLE_PROPS: any[];
6491
- static readonly $_ctor: string;
6492
- static readonly ITEM_TYPE = "Band Group";
6493
- private _bandGap;
6494
- private _noSplit;
6495
- private _direction;
6496
- constructor(name: string);
6497
- /**
6498
- * band count.
6499
- */
6500
- get bandCount(): number;
6501
- set bandCount(value: number);
6502
- /**
6503
- * gap between bands.
6504
- */
6505
- get bandGap(): number;
6506
- set bandGap(value: number);
6507
- /**
6508
- * 밴드그룹 설정 방향
6509
- */
6510
- get direction(): Direction;
6511
- set direction(value: Direction);
6512
- /**
6513
- * true면 밴드 아이템 전체 높이가 출력 페이지의 남은 높이 보다 클 경우 다음 페이지에 출력한다. #612
6514
- */
6515
- get noSplit(): boolean;
6516
- set noSplit(value: boolean);
6517
- /**
6518
- * @internal
6519
- * ReportPage에서 bodyItems를 통해 호출한다.
6520
- */
6521
- loadProps(src: any): void;
6522
- getSaveType(): string;
6523
- get outlineLabel(): string;
6524
- protected _getEditProps(): IPropInfo[];
6525
- protected _getStyleProps(): string[];
6526
- protected _doLoad(loader: IReportLoader, src: any): void;
6527
- protected _doSave(target: object): void;
6528
- canAdd(item: ReportItem): boolean;
6529
- private $_resetCells;
6530
- }
6531
-
6532
6553
  interface AsyncLoadable {
6533
6554
  loadAsync(ctx: PrintContext): Promise<void>;
6534
6555
  }
@@ -6755,6 +6776,7 @@ declare abstract class BandPrintInfo<T extends ReportItem> {
6755
6776
  abstract getNextPage(doc: Document, ctx: PrintContext, width: number, parent: HTMLDivElement): HTMLDivElement | null;
6756
6777
  abstract getNoPagingPage(doc: Document, ctx: PrintContext, width: number, parent: HTMLDivElement): HTMLDivElement;
6757
6778
  abstract getEmptyDataBandPage(doc: Document, ctx: PrintContext, bandPrintInfo: BandPrintInfo<T>, width: number, parent: HTMLDivElement): HTMLDivElement | null;
6779
+ abstract resetRowIndex(): void;
6758
6780
  rollback(page: HTMLDivElement): void;
6759
6781
  setMaxCount(rows: any[], count: number): void;
6760
6782
  isDataRow(row: any): row is number;
@@ -6769,11 +6791,17 @@ declare abstract class BandPrintInfo<T extends ReportItem> {
6769
6791
  * 데이터가 존재하지 않는 밴드에 대해 표시할지 말지 여부를 판단할 때 사용
6770
6792
  */
6771
6793
  isEmptyDataBandVisible(): boolean;
6794
+ /**
6795
+ * 밴드의 left, right 속성 적용
6796
+ */
6797
+ setBandBoundPosition(ctx: PrintContext, model: BandModel, div: HTMLDivElement): void;
6798
+ setBandPrevIndex(index: number): void;
6772
6799
  protected _setX(dom: HTMLElement, x: number): void;
6773
6800
  protected _setY(dom: HTMLElement, y: number): void;
6774
6801
  protected _setPos(dom: HTMLElement, x: number, y: number): void;
6775
6802
  protected _createPage(doc: Document, parent: HTMLDivElement): HTMLDivElement;
6776
6803
  protected _createSectionPage(doc: Document, parent: HTMLDivElement): HTMLDivElement;
6804
+ protected _createBandDetailPage(doc: Document, top: number, pageWidth: number): HTMLDivElement;
6777
6805
  protected _buildEndRows(marker: EndRowMarker, rowCount: number, rows: any[]): void;
6778
6806
  protected _unshiftEndRows(row: any, rows: any[]): void;
6779
6807
  /**
@@ -6799,9 +6827,9 @@ declare abstract class BandPrintInfo<T extends ReportItem> {
6799
6827
  * @param rowsPerPage 페이지에서 몇행 까지 출력할 수 있는지 정보
6800
6828
  * @returns true = 디테일 밴드 출력 끝, false = 다음장에 디테일 계속 출력
6801
6829
  */
6802
- protected _isDetailBandPrintEnd(row: BandPrintInfo<SimpleBand | TableBand>): boolean;
6803
- protected _resetRowIndex(row: BandPrintInfo<SimpleBand | TableBand>): void;
6804
- protected _prepareDetailBandPrintNext(ctx: PrintContext, band: DataBand, row: BandPrintInfo<SimpleBand | TableBand>, rows: BandPrintRow[], rowsPerPage: number): void;
6830
+ protected _isDetailBandPrintEnd(row: BandPrintInfo<SimpleBand | TableBand | BandGroup>): boolean;
6831
+ protected _resetRowIndex(row: BandPrintInfo<SimpleBand | TableBand | BandGroup>): void;
6832
+ protected _prepareDetailBandPrintNext(ctx: PrintContext, band: DataBand, row: BandPrintInfo<SimpleBand | TableBand | BandGroup>, rows: BandPrintRow[], rowsPerPage: number): void;
6805
6833
  }
6806
6834
  type PrintLine = {
6807
6835
  line: HTMLElement | BandPrintInfo<BandModel> | ReportFooterPrintInfo | PageBreaker;
@@ -42719,7 +42747,7 @@ declare class TreeViewListener extends GridBaseListener {
42719
42747
  onTreeViewChanged(tree: TreeView$1, item: TreeItem): void;
42720
42748
  }
42721
42749
 
42722
- declare type ErrorParams = {
42750
+ type ErrorParams = {
42723
42751
  code: number;
42724
42752
  stop: boolean;
42725
42753
  msg?: string;
@@ -42791,7 +42819,7 @@ declare class ReportViewer extends ReportViewBase {
42791
42819
  set reportForm(form: ReportForm);
42792
42820
  get report(): Report | Email;
42793
42821
  get dataSet(): ReportDataSet;
42794
- set dataSet(v: any);
42822
+ set dataSet(v: ReportDataSet);
42795
42823
  get isPaging(): boolean;
42796
42824
  /**
42797
42825
  * container에 리포트를 preview로 렌더링 합니다.
@@ -42831,6 +42859,7 @@ interface GridReportHeader {
42831
42859
  items: TextItem[];
42832
42860
  }
42833
42861
  interface GridReportTitle extends TextItem {
42862
+ sample?: string;
42834
42863
  }
42835
42864
  interface GridReportOptions extends ReportOptions {
42836
42865
  paper?: PaperOptions;
@@ -42911,30 +42940,43 @@ declare class ReportCompositeViewer extends ReportViewBase {
42911
42940
  interface ReportOptions {
42912
42941
  zoom: number;
42913
42942
  }
42914
- declare type ReportForm = Record<string, any>;
42915
- declare type ReportData = Record<string, any>;
42916
- declare type ReportDataSet = Record<string, ReportData>;
42917
- declare type ReportFormSet = {
42943
+ type ReportForm = Record<string, any>;
42944
+ type ReportData = Record<string, any>;
42945
+ type ReportDataSet = Record<string, ReportData>;
42946
+ type ReportFormSet = {
42918
42947
  form: ReportForm;
42919
42948
  dataSet?: ReportDataSet;
42920
42949
  };
42921
- declare type ReportFormSets = ReportFormSet[];
42950
+ type ReportFormSets = ReportFormSet[];
42922
42951
 
42923
42952
  /**
42924
42953
  * 컬럼 이름
42925
42954
  */
42926
- declare type ColumnName = string;
42955
+ type ColumnName = string;
42927
42956
  /**
42928
- * 그리드 리포트 레이아웃 정보
42929
- */
42930
- declare type GridReportLayout = {
42957
+ * 그리드 리포트 레이아웃 정보
42958
+ */
42959
+ type GridReportLayout = {
42931
42960
  exclude?: ColumnName[];
42932
42961
  autoWidth: boolean;
42933
42962
  };
42963
+ type GridReportItemSource = {
42964
+ type: string;
42965
+ value: string;
42966
+ text: string;
42967
+ name: string;
42968
+ height: string;
42969
+ prefix: string;
42970
+ top: string;
42971
+ bottom: string;
42972
+ left: string;
42973
+ right: string;
42974
+ styles: Styles;
42975
+ };
42934
42976
  /**
42935
42977
  * 리포트 프리뷰 옵션
42936
42978
  */
42937
- declare type PreviewOptions = {
42979
+ type PreviewOptions = {
42938
42980
  /**
42939
42981
  * 비동기 출력 여부
42940
42982
  * @defaultValue `false`
@@ -42955,6 +42997,11 @@ declare type PreviewOptions = {
42955
42997
  * @defaultValue `Align.CENTER`
42956
42998
  */
42957
42999
  align?: Align;
43000
+ /**
43001
+ * 페이지 없이 출력하는 옵션. false인 경우 페이지 구분 없이 출력합니다.
43002
+ * @defaultValue `true`
43003
+ */
43004
+ paging?: boolean;
42958
43005
  /**
42959
43006
  * 리포트를 한장에 여백없이 출력하는 옵션
42960
43007
  * @defaultValue `false`
@@ -42977,7 +43024,7 @@ declare type PreviewOptions = {
42977
43024
  /**
42978
43025
  * 리포트 출력 옵션
42979
43026
  */
42980
- declare type PrintOptions = {
43027
+ type PrintOptions = {
42981
43028
  /**
42982
43029
  * 최대 출력 대기 시간 ms 단위
42983
43030
  * @defaultValue 2000
@@ -42987,7 +43034,7 @@ declare type PrintOptions = {
42987
43034
  /**
42988
43035
  * PDF내보내기시 인자로 사용되는 옵션
42989
43036
  */
42990
- declare type PDFExportOptions = {
43037
+ type PDFExportOptions = {
42991
43038
  /**
42992
43039
  * pdf 문서에서 사용할 폰트의 목록 입니다.
42993
43040
  */
@@ -43018,6 +43065,6 @@ declare type PDFExportOptions = {
43018
43065
  permissions: PdfPermissions;
43019
43066
  pdfVersion: '1.3' | '1.4' | '1.5' | '1.6' | '1.7' | '1.7ext3';
43020
43067
  };
43021
- declare type PDFExportBlobOptions = Omit<PDFExportOptions, 'filename' | 'preview'>;
43068
+ type PDFExportBlobOptions = Omit<PDFExportOptions, 'filename' | 'preview'>;
43022
43069
 
43023
- export { GridReportLayout, GridReportViewer, PDFExportBlobOptions, PDFExportOptions, PreviewOptions, PrintOptions, ReportCompositeViewer, ReportData, ReportDataSet, ReportForm, ReportFormSet, ReportFormSets, ReportOptions, ReportViewer };
43070
+ export { GridReportItemSource, GridReportLayout, GridReportViewer, PDFExportBlobOptions, PDFExportOptions, PreviewOptions, PrintOptions, ReportCompositeViewer, ReportData, ReportDataSet, ReportForm, ReportFormSet, ReportFormSets, ReportOptions, ReportViewer };