@syncfusion/ej2-pdf-export 23.2.6 → 24.1.41

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.
Files changed (161) hide show
  1. package/CHANGELOG.md +0 -26
  2. package/dist/ej2-pdf-export.min.js +2 -2
  3. package/dist/ej2-pdf-export.umd.min.js +1 -1
  4. package/dist/ej2-pdf-export.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-pdf-export.es2015.js.map +1 -1
  6. package/dist/es6/ej2-pdf-export.es5.js.map +1 -1
  7. package/dist/global/ej2-pdf-export.min.js +1 -1
  8. package/dist/global/ej2-pdf-export.min.js.map +1 -1
  9. package/dist/global/index.d.ts +1 -1
  10. package/dist/ts/implementation/actions/action.ts +76 -0
  11. package/dist/ts/implementation/actions/uri-action.ts +52 -0
  12. package/dist/ts/implementation/annotations/action-link-annotation.ts +43 -0
  13. package/dist/ts/implementation/annotations/annotation-collection.ts +159 -0
  14. package/dist/ts/implementation/annotations/annotation.ts +241 -0
  15. package/dist/ts/implementation/annotations/document-link-annotation.ts +118 -0
  16. package/dist/ts/implementation/annotations/link-annotation.ts +32 -0
  17. package/dist/ts/implementation/annotations/pdf-text-web-link.ts +265 -0
  18. package/dist/ts/implementation/annotations/uri-annotation.ts +86 -0
  19. package/dist/ts/implementation/collections/dictionary.ts +150 -0
  20. package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +125 -0
  21. package/dist/ts/implementation/collections/utils.ts +38 -0
  22. package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +39 -0
  23. package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +108 -0
  24. package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +127 -0
  25. package/dist/ts/implementation/document/automatic-fields/composite-field.ts +76 -0
  26. package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +37 -0
  27. package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +75 -0
  28. package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +157 -0
  29. package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +82 -0
  30. package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +60 -0
  31. package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +48 -0
  32. package/dist/ts/implementation/document/pdf-catalog.ts +65 -0
  33. package/dist/ts/implementation/document/pdf-document-base.ts +180 -0
  34. package/dist/ts/implementation/document/pdf-document-template.ts +310 -0
  35. package/dist/ts/implementation/document/pdf-document.ts +342 -0
  36. package/dist/ts/implementation/document/pdf-viewer-preferences.ts +578 -0
  37. package/dist/ts/implementation/drawing/pdf-drawing.ts +218 -0
  38. package/dist/ts/implementation/general/enum.ts +21 -0
  39. package/dist/ts/implementation/general/functions/pdf-function.ts +66 -0
  40. package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +63 -0
  41. package/dist/ts/implementation/general/pdf-cache-collection.ts +97 -0
  42. package/dist/ts/implementation/general/pdf-collection.ts +41 -0
  43. package/dist/ts/implementation/general/pdf-destination.ts +170 -0
  44. package/dist/ts/implementation/graphics/brushes/enum.ts +237 -0
  45. package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +294 -0
  46. package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +68 -0
  47. package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +2438 -0
  48. package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +295 -0
  49. package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +311 -0
  50. package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +406 -0
  51. package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +290 -0
  52. package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +107 -0
  53. package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +304 -0
  54. package/dist/ts/implementation/graphics/constants.ts +31 -0
  55. package/dist/ts/implementation/graphics/enum.ts +413 -0
  56. package/dist/ts/implementation/graphics/figures/arc.ts +133 -0
  57. package/dist/ts/implementation/graphics/figures/base/draw-element.ts +59 -0
  58. package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +260 -0
  59. package/dist/ts/implementation/graphics/figures/base/fill-element.ts +72 -0
  60. package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +34 -0
  61. package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +69 -0
  62. package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +276 -0
  63. package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +205 -0
  64. package/dist/ts/implementation/graphics/figures/ellipse-part.ts +76 -0
  65. package/dist/ts/implementation/graphics/figures/enum.ts +80 -0
  66. package/dist/ts/implementation/graphics/figures/layout-element.ts +132 -0
  67. package/dist/ts/implementation/graphics/figures/path.ts +646 -0
  68. package/dist/ts/implementation/graphics/figures/pdf-template.ts +205 -0
  69. package/dist/ts/implementation/graphics/figures/rectangle-area.ts +108 -0
  70. package/dist/ts/implementation/graphics/figures/text-element.ts +445 -0
  71. package/dist/ts/implementation/graphics/fonts/enum.ts +385 -0
  72. package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +248 -0
  73. package/dist/ts/implementation/graphics/fonts/pdf-font.ts +316 -0
  74. package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +606 -0
  75. package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +243 -0
  76. package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +474 -0
  77. package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +165 -0
  78. package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +958 -0
  79. package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +374 -0
  80. package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +255 -0
  81. package/dist/ts/implementation/graphics/fonts/string-layouter.ts +617 -0
  82. package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +275 -0
  83. package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +206 -0
  84. package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +18 -0
  85. package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +18 -0
  86. package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +14 -0
  87. package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +26 -0
  88. package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +35 -0
  89. package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +94 -0
  90. package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +56 -0
  91. package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +10 -0
  92. package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +14 -0
  93. package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +106 -0
  94. package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +58 -0
  95. package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +33 -0
  96. package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +22 -0
  97. package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +42 -0
  98. package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +1254 -0
  99. package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +26 -0
  100. package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +26 -0
  101. package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +577 -0
  102. package/dist/ts/implementation/graphics/images/byte-array.ts +137 -0
  103. package/dist/ts/implementation/graphics/images/image-decoder.ts +439 -0
  104. package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +110 -0
  105. package/dist/ts/implementation/graphics/images/pdf-image.ts +132 -0
  106. package/dist/ts/implementation/graphics/pdf-color.ts +478 -0
  107. package/dist/ts/implementation/graphics/pdf-graphics.ts +2429 -0
  108. package/dist/ts/implementation/graphics/pdf-margins.ts +124 -0
  109. package/dist/ts/implementation/graphics/pdf-pen.ts +370 -0
  110. package/dist/ts/implementation/graphics/pdf-resources.ts +300 -0
  111. package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +246 -0
  112. package/dist/ts/implementation/graphics/pdf-transparency.ts +93 -0
  113. package/dist/ts/implementation/graphics/unit-convertor.ts +96 -0
  114. package/dist/ts/implementation/input-output/big-endian-writer.ts +121 -0
  115. package/dist/ts/implementation/input-output/cross-table.ts +21 -0
  116. package/dist/ts/implementation/input-output/enum.ts +16 -0
  117. package/dist/ts/implementation/input-output/pdf-cross-table.ts +524 -0
  118. package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +571 -0
  119. package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +194 -0
  120. package/dist/ts/implementation/input-output/pdf-operators.ts +363 -0
  121. package/dist/ts/implementation/input-output/pdf-stream-writer.ts +681 -0
  122. package/dist/ts/implementation/input-output/pdf-writer.ts +88 -0
  123. package/dist/ts/implementation/pages/enum.ts +201 -0
  124. package/dist/ts/implementation/pages/page-added-event-arguments.ts +39 -0
  125. package/dist/ts/implementation/pages/pdf-document-page-collection.ts +180 -0
  126. package/dist/ts/implementation/pages/pdf-page-base.ts +181 -0
  127. package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +348 -0
  128. package/dist/ts/implementation/pages/pdf-page-layer.ts +271 -0
  129. package/dist/ts/implementation/pages/pdf-page-settings.ts +192 -0
  130. package/dist/ts/implementation/pages/pdf-page-size.ts +162 -0
  131. package/dist/ts/implementation/pages/pdf-page-template-element.ts +663 -0
  132. package/dist/ts/implementation/pages/pdf-page.ts +235 -0
  133. package/dist/ts/implementation/pages/pdf-section-collection.ts +187 -0
  134. package/dist/ts/implementation/pages/pdf-section-page-collection.ts +61 -0
  135. package/dist/ts/implementation/pages/pdf-section-templates.ts +96 -0
  136. package/dist/ts/implementation/pages/pdf-section.ts +644 -0
  137. package/dist/ts/implementation/primitives/pdf-array.ts +386 -0
  138. package/dist/ts/implementation/primitives/pdf-boolean.ts +119 -0
  139. package/dist/ts/implementation/primitives/pdf-dictionary.ts +513 -0
  140. package/dist/ts/implementation/primitives/pdf-name.ts +218 -0
  141. package/dist/ts/implementation/primitives/pdf-number.ts +165 -0
  142. package/dist/ts/implementation/primitives/pdf-reference.ts +430 -0
  143. package/dist/ts/implementation/primitives/pdf-stream.ts +306 -0
  144. package/dist/ts/implementation/primitives/pdf-string.ts +397 -0
  145. package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +2027 -0
  146. package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +1193 -0
  147. package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +206 -0
  148. package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +470 -0
  149. package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +853 -0
  150. package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +240 -0
  151. package/dist/ts/implementation/structured-elements/grid/styles/style.ts +424 -0
  152. package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +16 -0
  153. package/dist/ts/interfaces/i-pdf-cache.ts +23 -0
  154. package/dist/ts/interfaces/i-pdf-changable.ts +17 -0
  155. package/dist/ts/interfaces/i-pdf-clonable.ts +12 -0
  156. package/dist/ts/interfaces/i-pdf-primitives.ts +45 -0
  157. package/dist/ts/interfaces/i-pdf-true-type-font.ts +48 -0
  158. package/dist/ts/interfaces/i-pdf-wrapper.ts +13 -0
  159. package/dist/ts/interfaces/i-pdf-writer.ts +29 -0
  160. package/package.json +7 -7
  161. package/src/implementation/document/pdf-document-base.js +1 -2
@@ -0,0 +1,206 @@
1
+ /**
2
+ * `PdfGridColumn.ts` class for EJ2-PDF
3
+ */
4
+ import { PdfGrid } from './pdf-grid';
5
+ import { PdfGridRow } from './pdf-grid-row';
6
+ import { PdfGridCell } from './pdf-grid-cell';
7
+ import { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';
8
+ /**
9
+ * `PdfGridColumn` class represents the schema of a column in a 'PdfGrid'.
10
+ */
11
+ export class PdfGridColumn {
12
+ //Fields
13
+ /**
14
+ * The current `grid`.
15
+ * @private
16
+ */
17
+ private grid : PdfGrid;
18
+ /**
19
+ * The `width` of the column.
20
+ * @default 0
21
+ * @private
22
+ */
23
+ public columnWidth : number = 0;
24
+ /**
25
+ * Represent the `custom width` of the column.
26
+ * @private
27
+ */
28
+ public isCustomWidth : boolean;
29
+ /**
30
+ * The `string format` of the column.
31
+ * @private
32
+ */
33
+ private stringFormat : PdfStringFormat;
34
+ //Constructors
35
+ /**
36
+ * Initializes a new instance of the `PdfGridColumn` class with the parent grid.
37
+ * @private
38
+ */
39
+ public constructor(grid : PdfGrid) {
40
+ this.grid = grid;
41
+ }
42
+ /**
43
+ * Gets or sets the `width` of the 'PdfGridColumn'.
44
+ * @private
45
+ */
46
+ public get width() : number {
47
+ return this.columnWidth;
48
+ }
49
+ public set width(value : number) {
50
+ this.isCustomWidth = true;
51
+ this.columnWidth = value;
52
+ }
53
+ /**
54
+ * Gets or sets the information about the text `formatting`.
55
+ * @private
56
+ */
57
+ public get format() : PdfStringFormat {
58
+ if (this.stringFormat == null) {
59
+ this.stringFormat = new PdfStringFormat(); //GetDefaultFormat();
60
+ }
61
+ return this.stringFormat;
62
+ }
63
+ public set format(value : PdfStringFormat) {
64
+ this.stringFormat = value;
65
+ }
66
+ }
67
+ /**
68
+ * `PdfGridColumnCollection` class provides access to an ordered,
69
+ * strongly typed collection of 'PdfGridColumn' objects.
70
+ * @private
71
+ */
72
+ export class PdfGridColumnCollection {
73
+ //Fields
74
+ /**
75
+ * @hidden
76
+ * @private
77
+ */
78
+ private grid : PdfGrid;
79
+ /**
80
+ * @hidden
81
+ * @private
82
+ */
83
+ private internalColumns : PdfGridColumn[] = [];
84
+ /**
85
+ * @hidden
86
+ * @private
87
+ */
88
+ private columnWidth : number = 0;
89
+ //properties
90
+
91
+ //Constructors
92
+ /**
93
+ * Initializes a new instance of the `PdfGridColumnCollection` class with the parent grid.
94
+ * @private
95
+ */
96
+ public constructor(grid : PdfGrid) {
97
+ this.grid = grid;
98
+ this.internalColumns = [];
99
+ }
100
+ //Iplementation
101
+ /**
102
+ * `Add` a new column to the 'PdfGrid'.
103
+ * @private
104
+ */
105
+ public add(count : number) : void {
106
+ // public add(column : PdfGridColumn) : void
107
+ // public add(arg : number|PdfGridColumn) : void {
108
+ // if (typeof arg === 'number') {
109
+ for (let i : number = 0; i < count; i++) {
110
+ this.internalColumns.push(new PdfGridColumn(this.grid));
111
+ for (let index : number = 0; index < this.grid.rows.count; index++) {
112
+ let row : PdfGridRow = this.grid.rows.getRow(index);
113
+ let cell : PdfGridCell = new PdfGridCell();
114
+ cell.value = '';
115
+ row.cells.add(cell);
116
+ }
117
+ }
118
+ // } else {
119
+ // let column : PdfGridColumn = new PdfGridColumn(this.grid);
120
+ // this.columns.push(column);
121
+ // return column;
122
+ // }
123
+ }
124
+ /**
125
+ * Gets the `number of columns` in the 'PdfGrid'.[Read-Only].
126
+ * @private
127
+ */
128
+ public get count() : number {
129
+ return this.internalColumns.length;
130
+ }
131
+ /**
132
+ * Gets the `widths`.
133
+ * @private
134
+ */
135
+ public get width() : number {
136
+ if (this.columnWidth === 0 ) {
137
+ this.columnWidth = this.measureColumnsWidth();
138
+ }
139
+ if (this.grid.initialWidth !== 0 && this.columnWidth !== this.grid.initialWidth && !this.grid.style.allowHorizontalOverflow) {
140
+ this.columnWidth = this.grid.initialWidth;
141
+ this.grid.isPageWidth = true;
142
+ }
143
+ return this.columnWidth;
144
+ }
145
+ /**
146
+ * Gets the `array of PdfGridColumn`.[Read-Only]
147
+ * @private
148
+ */
149
+ public get columns() : PdfGridColumn[] {
150
+ return this.internalColumns;
151
+ }
152
+ /**
153
+ * Gets the `PdfGridColumn` from the specified index.[Read-Only]
154
+ * @private
155
+ */
156
+ public getColumn(index : number) : PdfGridColumn {
157
+ if (index >= 0 && index <= this.columns.length) {
158
+ return this.columns[index];
159
+ } else {
160
+ throw Error('can not get the column from the index: ' + index);
161
+ }
162
+ }
163
+
164
+ //Implementation
165
+ /**
166
+ * `Calculates the column widths`.
167
+ * @private
168
+ */
169
+ public measureColumnsWidth() : number {
170
+ let totalWidth : number = 0;
171
+ this.grid.measureColumnsWidth();
172
+ for (let i : number = 0, count : number = this.internalColumns.length; i < count; i++) {
173
+ totalWidth += this.internalColumns[i].width;
174
+ }
175
+ return totalWidth;
176
+ }
177
+ /**
178
+ * Gets the `widths of the columns`.
179
+ * @private
180
+ */
181
+ public getDefaultWidths(totalWidth : number) : number[] {
182
+ let widths : number[] = [];
183
+ let summ : number = 0.0;
184
+ let subFactor : number = this.count;
185
+ for (let i : number = 0; i < this.count; i++) {
186
+ if (this.grid.isPageWidth && totalWidth >= 0 && !this.internalColumns[i].isCustomWidth) {
187
+ this.internalColumns[i].width = 0;
188
+ } else {
189
+ widths[i] = this.internalColumns[i].width;
190
+ if (this.internalColumns[i].width > 0 && this. internalColumns[i].isCustomWidth) {
191
+ totalWidth -= this.internalColumns[i].width;
192
+ subFactor--;
193
+ } else {
194
+ widths[i] = 0;
195
+ }
196
+ }
197
+ }
198
+ for (let i : number = 0; i < this.count; i++) {
199
+ let width : number = totalWidth / subFactor;
200
+ if (widths[i] <= 0) {
201
+ widths[i] = width;
202
+ }
203
+ }
204
+ return widths;
205
+ }
206
+ }
@@ -0,0 +1,470 @@
1
+ /**
2
+ * PdfGridRow.ts class for EJ2-PDF
3
+ */
4
+ import { PdfGrid } from './pdf-grid';
5
+ import { PdfGridCell, PdfGridCellCollection } from './pdf-grid-cell';
6
+ import { PdfGridRowStyle } from './styles/style';
7
+ import { PdfLayoutResult } from '../../graphics/figures/base/element-layouter';
8
+ import { PdfGridColumn } from './../../structured-elements/grid/pdf-grid-column';
9
+ /**
10
+ * `PdfGridRow` class provides customization of the settings for the particular row.
11
+ */
12
+ export class PdfGridRow {
13
+ //Fields
14
+ /**
15
+ * `Cell collecton` of the current row..
16
+ * @private
17
+ */
18
+ private gridCells : PdfGridCellCollection;
19
+ /**
20
+ * Stores the current `grid`.
21
+ * @private
22
+ */
23
+ private pdfGrid : PdfGrid;
24
+ /**
25
+ * The grid row `style`.
26
+ * @private
27
+ */
28
+ private rowStyle : PdfGridRowStyle;
29
+ /**
30
+ * Stores the row `break height`.
31
+ * @private
32
+ */
33
+ private gridRowBreakHeight : number;
34
+ /**
35
+ * Stores the index of the overflowing row.
36
+ * @private
37
+ */
38
+ private gridRowOverflowIndex : number = 0;
39
+ /**
40
+ * The `height` of the row.
41
+ * @private
42
+ */
43
+ private rowHeight : number = 0;
44
+ /**
45
+ * The `width` of the row.
46
+ * @private
47
+ */
48
+ private rowWidth : number = 0;
49
+ /**
50
+ * The `isFinish` of the row.
51
+ * @private
52
+ */
53
+ public isrowFinish : boolean = false;
54
+ /**
55
+ * Check whether the Row span row height `is set explicitly`.
56
+ * @default false
57
+ * @public
58
+ */
59
+ public isRowSpanRowHeightSet : boolean = false;
60
+ /**
61
+ * The grid row `Layout Result`.
62
+ * @private
63
+ */
64
+ private gridResult : PdfLayoutResult ;
65
+ /**
66
+ * The `Maximum span` of the row.
67
+ * @public
68
+ */
69
+ public maximumRowSpan : number;
70
+ /**
71
+ * The `page count` of the row.
72
+ * @public
73
+ */
74
+ public noOfPageCount : number = 0 ;
75
+ /**
76
+ * Check whether the row height `is set explicitly`.
77
+ * @default false
78
+ * @private
79
+ */
80
+ public isRowHeightSet : boolean = false;
81
+ public isRowBreaksNextPage : boolean ;
82
+ public rowBreakHeightValue : number;
83
+ public isPageBreakRowSpanApplied : boolean = false;
84
+ /**
85
+ * Checks whether the `columns span is exist or not`.
86
+ * @private
87
+ */
88
+ private bColumnSpanExists : boolean;
89
+ /**
90
+ * Check weather the row merge `is completed` or not.
91
+ * @default true
92
+ * @private
93
+ */
94
+ private isRowMergeComplete : boolean = true;
95
+ /**
96
+ * Checks whether the `row span is exist or not`.
97
+ * @private
98
+ */
99
+ private bRowSpanExists : boolean;
100
+ public repeatFlag : boolean = false;
101
+ public repeatRowNumber : number;
102
+ public rowFontSplit : boolean = false;
103
+ public isHeaderRow: boolean = false;
104
+ //Constructor
105
+ /**
106
+ * Initializes a new instance of the `PdfGridRow` class with the parent grid.
107
+ * @private
108
+ */
109
+ public constructor(grid : PdfGrid) {
110
+ this.pdfGrid = grid;
111
+ }
112
+ //Properties
113
+ /**
114
+ * Gets or sets a value indicating [`row span exists`].
115
+ * @private
116
+ */
117
+ public get rowSpanExists() : boolean {
118
+ return this.bRowSpanExists;
119
+ }
120
+ public set rowSpanExists(value : boolean) {
121
+ this.bRowSpanExists = value;
122
+ }
123
+ /**
124
+ * Gets the `cells` from the selected row.[Read-Only].
125
+ * @private
126
+ */
127
+ public get cells() : PdfGridCellCollection {
128
+ if (this.gridCells == null) {
129
+ this.gridCells = new PdfGridCellCollection(this);
130
+ }
131
+ return this.gridCells;
132
+ }
133
+ /**
134
+ * Gets or sets the parent `grid`.
135
+ * @private
136
+ */
137
+ public get grid() : PdfGrid {
138
+ return this.pdfGrid;
139
+ }
140
+ public set grid(value : PdfGrid) {
141
+ this.pdfGrid = value;
142
+ }
143
+ /**
144
+ * Gets or sets the row `style`.
145
+ * @private
146
+ */
147
+ public get style() : PdfGridRowStyle {
148
+ if (typeof this.rowStyle === 'undefined') {
149
+ this.rowStyle = new PdfGridRowStyle();
150
+ this.rowStyle.setParent(this);
151
+ }
152
+ return this.rowStyle;
153
+ }
154
+ public set style(value : PdfGridRowStyle) {
155
+ this.rowStyle = value;
156
+ for (let i : number = 0; i < this.cells.count; i++) {
157
+ this.cells.getCell(i).style.borders = value.border;
158
+ if (typeof value.font !== 'undefined') {
159
+ this.cells.getCell(i).style.font = value.font;
160
+ }
161
+ if (typeof value.backgroundBrush !== 'undefined') {
162
+ this.cells.getCell(i).style.backgroundBrush = value.backgroundBrush;
163
+ }
164
+ if (typeof value.backgroundImage !== 'undefined') {
165
+ this.cells.getCell(i).style.backgroundImage = value.backgroundImage;
166
+ }
167
+ if (typeof value.textBrush !== 'undefined') {
168
+ this.cells.getCell(i).style.textBrush = value.textBrush;
169
+ }
170
+ if (typeof value.textPen !== 'undefined') {
171
+ this.cells.getCell(i).style.textPen = value.textPen;
172
+ }
173
+ }
174
+ }
175
+ /**
176
+ * `Height` of the row yet to be drawn after split.
177
+ * @private
178
+ */
179
+ public get rowBreakHeight() : number {
180
+ if (typeof this.gridRowBreakHeight === 'undefined') {
181
+ this.gridRowBreakHeight = 0;
182
+ }
183
+ return this.gridRowBreakHeight;
184
+ }
185
+ public set rowBreakHeight(value : number) {
186
+ this.gridRowBreakHeight = value;
187
+ }
188
+ /**
189
+ * `over flow index` of the row.
190
+ * @private
191
+ */
192
+ public get rowOverflowIndex() : number {
193
+ return this.gridRowOverflowIndex;
194
+ }
195
+ public set rowOverflowIndex(value : number) {
196
+ this.gridRowOverflowIndex = value;
197
+ }
198
+ /**
199
+ * Gets or sets the `height` of the row.
200
+ * @private
201
+ */
202
+ public get height() : number {
203
+ if (!this.isRowHeightSet) {
204
+ this.rowHeight = this.measureHeight();
205
+ }
206
+ return this.rowHeight;
207
+ }
208
+ public set height(value : number) {
209
+ this.rowHeight = value;
210
+ this.isRowHeightSet = true;
211
+ }
212
+ /**
213
+ * Gets or sets the `width` of the row.
214
+ * @private
215
+ */
216
+ public get width() : number {
217
+ if (this.rowWidth === 0 || typeof this.rowWidth === 'undefined') {
218
+ this.rowWidth = this.measureWidth();
219
+ }
220
+ return this.rowWidth;
221
+ }
222
+ /**
223
+ * Gets or sets the row `Nested grid Layout Result`.
224
+ * @private
225
+ */
226
+ public get NestedGridLayoutResult() : PdfLayoutResult{
227
+ return this.gridResult;
228
+ }
229
+ public set NestedGridLayoutResult(value : PdfLayoutResult ) {
230
+ this.gridResult = value;
231
+ }
232
+ /**
233
+ * Gets or sets a value indicating [`column span exists`].
234
+ * @private
235
+ */
236
+ public get columnSpanExists() : boolean {
237
+ return this.bColumnSpanExists;
238
+ }
239
+ public set columnSpanExists(value : boolean) {
240
+ this.bColumnSpanExists = value;
241
+ }
242
+ /**
243
+ * Check whether the Row `has row span or row merge continue`.
244
+ * @private
245
+ */
246
+ public get rowMergeComplete() : boolean {
247
+ return this.isRowMergeComplete;
248
+ }
249
+ public set rowMergeComplete(value : boolean) {
250
+ this.isRowMergeComplete = value;
251
+ }
252
+ /**
253
+ * Returns `index` of the row.
254
+ * @private
255
+ */
256
+ public get rowIndex() : number {
257
+ return this.grid.rows.rowCollection.indexOf(this);
258
+ }
259
+ //Implementation
260
+ /**
261
+ * `Calculates the height`.
262
+ * @private
263
+ */
264
+ private measureHeight() : number {
265
+ let rowSpanRemainingHeight : number = 0;
266
+ let rowHeight : number;
267
+ let maxHeight : number = 0;
268
+ if (this.cells.getCell(0).rowSpan > 1) {
269
+ rowHeight = 0;
270
+ } else {
271
+ rowHeight = this.cells.getCell(0).height;
272
+ }
273
+ for (let i : number = 0; i < this.cells.count; i++) {
274
+ let cell : PdfGridCell = this.cells.getCell(i);
275
+ //get the maximum rowspan remaining height.
276
+ if (cell.rowSpanRemainingHeight > rowSpanRemainingHeight) {
277
+ rowSpanRemainingHeight = cell.rowSpanRemainingHeight;
278
+ }
279
+ //skip the cell if row spanned.
280
+ // if (cell.isRowMergeContinue) {
281
+ // continue;
282
+ // }
283
+ // if (!cell.isRowMergeContinue) {
284
+ // this.rowMergeComplete = false;
285
+ // }
286
+ this.rowMergeComplete = false;
287
+ if (cell.rowSpan > 1) {
288
+ let cellIn : number = i;
289
+ let rowin : number = this.isHeaderRow ? this.grid.headers.indexOf(this) : this.grid.rows.rowCollection.indexOf(this);
290
+ for (let j : number = 0; j < cell.rowSpan; j++ ) {
291
+ if ( (j + 1) < cell.rowSpan) {
292
+ (this.isHeaderRow ? this.grid.headers.getHeader(rowin + j + 1) : this.grid.rows.getRow(rowin + j + 1)).cells.getCell(cellIn).hasRowSpan = true;
293
+ }
294
+ }
295
+ if (maxHeight < cell.height) {
296
+ maxHeight = cell.height;
297
+ }
298
+ continue;
299
+ }
300
+ rowHeight = Math.max(rowHeight, cell.height);
301
+ }
302
+ if (maxHeight > rowHeight) {
303
+ rowHeight = maxHeight;
304
+ }
305
+ if (rowHeight === 0) {
306
+ rowHeight = maxHeight;
307
+ } else if (rowSpanRemainingHeight > 0) {
308
+ rowHeight += rowSpanRemainingHeight;
309
+ }
310
+ return rowHeight;
311
+ }
312
+ private measureWidth() : number {
313
+ let rowWid : number = 0;
314
+ for (let i : number = 0; i < this.grid.columns.count; i++) {
315
+ let column : PdfGridColumn = this.grid.columns.getColumn(i);
316
+ rowWid += column.width;
317
+ }
318
+ return rowWid;
319
+ }
320
+ }
321
+ /**
322
+ * `PdfGridRowCollection` class provides access to an ordered, strongly typed collection of 'PdfGridRow' objects.
323
+ * @private
324
+ */
325
+ export class PdfGridRowCollection {
326
+ // Fields
327
+ /**
328
+ * @hidden
329
+ * @private
330
+ */
331
+ private grid : PdfGrid;
332
+ /**
333
+ * The row collection of the `grid`.
334
+ * @private
335
+ */
336
+ private rows : PdfGridRow[];
337
+ // Constructor
338
+ /**
339
+ * Initializes a new instance of the `PdfGridRowCollection` class with the parent grid.
340
+ * @private
341
+ */
342
+ public constructor(grid : PdfGrid) {
343
+ this.rows = [];
344
+ this.grid = grid;
345
+ }
346
+ //Properties
347
+ /**
348
+ * Gets the number of header in the `PdfGrid`.[Read-Only].
349
+ * @private
350
+ */
351
+ public get count() : number {
352
+ return this.rows.length;
353
+ }
354
+ //Implementation
355
+ /**
356
+ * Return the row collection of the `grid`.
357
+ * @private
358
+ */
359
+ public get rowCollection() : PdfGridRow[] {
360
+ return this.rows;
361
+ }
362
+ /**
363
+ * `Adds` the specified row.
364
+ * @private
365
+ */
366
+ public addRow() : PdfGridRow
367
+ /**
368
+ * `Adds` the specified row.
369
+ * @private
370
+ */
371
+ public addRow(row : PdfGridRow) : void
372
+ public addRow(arg ?: PdfGridRow) : void | PdfGridRow {
373
+ if (typeof arg === 'undefined') {
374
+ let temprow : PdfGridRow = new PdfGridRow(this.grid);
375
+ this.addRow(temprow);
376
+ return temprow;
377
+ } else {
378
+ arg.style.setBackgroundBrush(this.grid.style.backgroundBrush);
379
+ arg.style.setFont(this.grid.style.font);
380
+ arg.style.setTextBrush(this.grid.style.textBrush);
381
+ arg.style.setTextPen(this.grid.style.textPen);
382
+ if (arg.cells.count === 0) {
383
+ for (let i : number = 0; i < this.grid.columns.count; i++) {
384
+ arg.cells.add(new PdfGridCell());
385
+ }
386
+ }
387
+ this.rows.push(arg);
388
+ }
389
+ }
390
+ /**
391
+ * Return the row by index.
392
+ * @private
393
+ */
394
+ public getRow(index : number) : PdfGridRow {
395
+ return this.rows[index];
396
+ }
397
+ }
398
+ /**
399
+ * `PdfGridHeaderCollection` class provides customization of the settings for the header.
400
+ * @private
401
+ */
402
+ export class PdfGridHeaderCollection {
403
+ /**
404
+ * The `grid`.
405
+ * @private
406
+ */
407
+ private grid : PdfGrid;
408
+ /**
409
+ * The array to store the `rows` of the grid header.
410
+ * @private
411
+ */
412
+ private rows : PdfGridRow[] = [];
413
+ //constructor
414
+ /**
415
+ * Initializes a new instance of the `PdfGridHeaderCollection` class with the parent grid.
416
+ * @private
417
+ */
418
+ public constructor(grid : PdfGrid) {
419
+ this.grid = grid;
420
+ this.rows = [];
421
+ }
422
+ //Properties
423
+ /**
424
+ * Gets a 'PdfGridRow' object that represents the `header` row in a 'PdfGridHeaderCollection' control.[Read-Only].
425
+ * @private
426
+ */
427
+ public getHeader(index : number) : PdfGridRow {
428
+ // if (index < 0 || index >= Count) {
429
+ // throw new IndexOutOfRangeException();
430
+ // }
431
+ return (this.rows[index]);
432
+ }
433
+ /**
434
+ * Gets the `number of header` in the 'PdfGrid'.[Read-Only]
435
+ * @private
436
+ */
437
+ public get count() : number {
438
+ return this.rows.length;
439
+ }
440
+ //Implementation
441
+ /**
442
+ * `Adds` the specified row.
443
+ * @private
444
+ */
445
+ public add(row : PdfGridRow) : void
446
+ /**
447
+ * `Adds` the specified row.
448
+ * @private
449
+ */
450
+ public add(count : number) : PdfGridRow[]
451
+ public add(arg : number|PdfGridRow) : void|PdfGridRow[] {
452
+ if (typeof arg === 'number') {
453
+ let row : PdfGridRow;
454
+ for (let i : number = 0; i < arg; i++) {
455
+ row = new PdfGridRow(this.grid);
456
+ row.isHeaderRow = true;
457
+ for (let j : number = 0; j < this.grid.columns.count; j++) {
458
+ row.cells.add(new PdfGridCell());
459
+ }
460
+ this.rows.push(row);
461
+ }
462
+ return this.rows;
463
+ } else {
464
+ this.rows.push(arg);
465
+ }
466
+ }
467
+ public indexOf(row : PdfGridRow) : number {
468
+ return this.rows.indexOf(row);
469
+ }
470
+ }