@syncfusion/ej2-pdf-export 21.2.8 → 22.1.34

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 (163) hide show
  1. package/.eslintrc.json +1 -0
  2. package/CHANGELOG.md +8 -0
  3. package/dist/ej2-pdf-export.min.js +2 -2
  4. package/dist/ej2-pdf-export.umd.min.js +2 -2
  5. package/dist/ej2-pdf-export.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-pdf-export.es2015.js +14 -11
  7. package/dist/es6/ej2-pdf-export.es2015.js.map +1 -1
  8. package/dist/es6/ej2-pdf-export.es5.js +14 -11
  9. package/dist/es6/ej2-pdf-export.es5.js.map +1 -1
  10. package/dist/global/ej2-pdf-export.min.js +2 -2
  11. package/dist/global/ej2-pdf-export.min.js.map +1 -1
  12. package/dist/global/index.d.ts +1 -1
  13. package/dist/ts/implementation/actions/action.ts +76 -0
  14. package/dist/ts/implementation/actions/uri-action.ts +52 -0
  15. package/dist/ts/implementation/annotations/action-link-annotation.ts +43 -0
  16. package/dist/ts/implementation/annotations/annotation-collection.ts +159 -0
  17. package/dist/ts/implementation/annotations/annotation.ts +241 -0
  18. package/dist/ts/implementation/annotations/document-link-annotation.ts +118 -0
  19. package/dist/ts/implementation/annotations/link-annotation.ts +32 -0
  20. package/dist/ts/implementation/annotations/pdf-text-web-link.ts +265 -0
  21. package/dist/ts/implementation/annotations/uri-annotation.ts +86 -0
  22. package/dist/ts/implementation/collections/dictionary.ts +150 -0
  23. package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +125 -0
  24. package/dist/ts/implementation/collections/utils.ts +38 -0
  25. package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +39 -0
  26. package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +108 -0
  27. package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +127 -0
  28. package/dist/ts/implementation/document/automatic-fields/composite-field.ts +76 -0
  29. package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +37 -0
  30. package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +75 -0
  31. package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +157 -0
  32. package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +82 -0
  33. package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +60 -0
  34. package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +48 -0
  35. package/dist/ts/implementation/document/pdf-catalog.ts +52 -0
  36. package/dist/ts/implementation/document/pdf-document-base.ts +166 -0
  37. package/dist/ts/implementation/document/pdf-document-template.ts +310 -0
  38. package/dist/ts/implementation/document/pdf-document.ts +342 -0
  39. package/dist/ts/implementation/drawing/pdf-drawing.ts +218 -0
  40. package/dist/ts/implementation/general/enum.ts +21 -0
  41. package/dist/ts/implementation/general/functions/pdf-function.ts +66 -0
  42. package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +62 -0
  43. package/dist/ts/implementation/general/pdf-cache-collection.ts +97 -0
  44. package/dist/ts/implementation/general/pdf-collection.ts +41 -0
  45. package/dist/ts/implementation/general/pdf-destination.ts +170 -0
  46. package/dist/ts/implementation/graphics/brushes/enum.ts +237 -0
  47. package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +294 -0
  48. package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +68 -0
  49. package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +2438 -0
  50. package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +295 -0
  51. package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +311 -0
  52. package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +406 -0
  53. package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +290 -0
  54. package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +107 -0
  55. package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +304 -0
  56. package/dist/ts/implementation/graphics/constants.ts +31 -0
  57. package/dist/ts/implementation/graphics/enum.ts +413 -0
  58. package/dist/ts/implementation/graphics/figures/arc.ts +133 -0
  59. package/dist/ts/implementation/graphics/figures/base/draw-element.ts +59 -0
  60. package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +260 -0
  61. package/dist/ts/implementation/graphics/figures/base/fill-element.ts +72 -0
  62. package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +34 -0
  63. package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +69 -0
  64. package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +276 -0
  65. package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +205 -0
  66. package/dist/ts/implementation/graphics/figures/ellipse-part.ts +76 -0
  67. package/dist/ts/implementation/graphics/figures/enum.ts +80 -0
  68. package/dist/ts/implementation/graphics/figures/layout-element.ts +132 -0
  69. package/dist/ts/implementation/graphics/figures/path.ts +646 -0
  70. package/dist/ts/implementation/graphics/figures/pdf-template.ts +205 -0
  71. package/dist/ts/implementation/graphics/figures/rectangle-area.ts +108 -0
  72. package/dist/ts/implementation/graphics/figures/text-element.ts +445 -0
  73. package/dist/ts/implementation/graphics/fonts/enum.ts +385 -0
  74. package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +248 -0
  75. package/dist/ts/implementation/graphics/fonts/pdf-font.ts +316 -0
  76. package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +606 -0
  77. package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +243 -0
  78. package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +474 -0
  79. package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +165 -0
  80. package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +958 -0
  81. package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +374 -0
  82. package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +255 -0
  83. package/dist/ts/implementation/graphics/fonts/string-layouter.ts +617 -0
  84. package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +275 -0
  85. package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +206 -0
  86. package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +18 -0
  87. package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +18 -0
  88. package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +14 -0
  89. package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +26 -0
  90. package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +35 -0
  91. package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +94 -0
  92. package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +56 -0
  93. package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +10 -0
  94. package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +14 -0
  95. package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +106 -0
  96. package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +58 -0
  97. package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +33 -0
  98. package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +22 -0
  99. package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +42 -0
  100. package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +1254 -0
  101. package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +26 -0
  102. package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +26 -0
  103. package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +577 -0
  104. package/dist/ts/implementation/graphics/images/byte-array.ts +137 -0
  105. package/dist/ts/implementation/graphics/images/image-decoder.ts +439 -0
  106. package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +110 -0
  107. package/dist/ts/implementation/graphics/images/pdf-image.ts +132 -0
  108. package/dist/ts/implementation/graphics/pdf-color.ts +478 -0
  109. package/dist/ts/implementation/graphics/pdf-graphics.ts +2424 -0
  110. package/dist/ts/implementation/graphics/pdf-margins.ts +124 -0
  111. package/dist/ts/implementation/graphics/pdf-pen.ts +370 -0
  112. package/dist/ts/implementation/graphics/pdf-resources.ts +300 -0
  113. package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +246 -0
  114. package/dist/ts/implementation/graphics/pdf-transparency.ts +93 -0
  115. package/dist/ts/implementation/graphics/unit-convertor.ts +96 -0
  116. package/dist/ts/implementation/input-output/big-endian-writer.ts +121 -0
  117. package/dist/ts/implementation/input-output/cross-table.ts +21 -0
  118. package/dist/ts/implementation/input-output/enum.ts +16 -0
  119. package/dist/ts/implementation/input-output/pdf-cross-table.ts +524 -0
  120. package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +515 -0
  121. package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +194 -0
  122. package/dist/ts/implementation/input-output/pdf-operators.ts +363 -0
  123. package/dist/ts/implementation/input-output/pdf-stream-writer.ts +681 -0
  124. package/dist/ts/implementation/input-output/pdf-writer.ts +88 -0
  125. package/dist/ts/implementation/pages/enum.ts +201 -0
  126. package/dist/ts/implementation/pages/page-added-event-arguments.ts +39 -0
  127. package/dist/ts/implementation/pages/pdf-document-page-collection.ts +180 -0
  128. package/dist/ts/implementation/pages/pdf-page-base.ts +181 -0
  129. package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +348 -0
  130. package/dist/ts/implementation/pages/pdf-page-layer.ts +271 -0
  131. package/dist/ts/implementation/pages/pdf-page-settings.ts +192 -0
  132. package/dist/ts/implementation/pages/pdf-page-size.ts +162 -0
  133. package/dist/ts/implementation/pages/pdf-page-template-element.ts +659 -0
  134. package/dist/ts/implementation/pages/pdf-page.ts +235 -0
  135. package/dist/ts/implementation/pages/pdf-section-collection.ts +187 -0
  136. package/dist/ts/implementation/pages/pdf-section-page-collection.ts +61 -0
  137. package/dist/ts/implementation/pages/pdf-section-templates.ts +96 -0
  138. package/dist/ts/implementation/pages/pdf-section.ts +644 -0
  139. package/dist/ts/implementation/primitives/pdf-array.ts +386 -0
  140. package/dist/ts/implementation/primitives/pdf-boolean.ts +119 -0
  141. package/dist/ts/implementation/primitives/pdf-dictionary.ts +513 -0
  142. package/dist/ts/implementation/primitives/pdf-name.ts +218 -0
  143. package/dist/ts/implementation/primitives/pdf-number.ts +165 -0
  144. package/dist/ts/implementation/primitives/pdf-reference.ts +430 -0
  145. package/dist/ts/implementation/primitives/pdf-stream.ts +336 -0
  146. package/dist/ts/implementation/primitives/pdf-string.ts +397 -0
  147. package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +2027 -0
  148. package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +1193 -0
  149. package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +206 -0
  150. package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +470 -0
  151. package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +853 -0
  152. package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +240 -0
  153. package/dist/ts/implementation/structured-elements/grid/styles/style.ts +424 -0
  154. package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +16 -0
  155. package/dist/ts/interfaces/i-pdf-cache.ts +23 -0
  156. package/dist/ts/interfaces/i-pdf-changable.ts +17 -0
  157. package/dist/ts/interfaces/i-pdf-clonable.ts +12 -0
  158. package/dist/ts/interfaces/i-pdf-primitives.ts +45 -0
  159. package/dist/ts/interfaces/i-pdf-true-type-font.ts +48 -0
  160. package/dist/ts/interfaces/i-pdf-wrapper.ts +13 -0
  161. package/dist/ts/interfaces/i-pdf-writer.ts +29 -0
  162. package/package.json +6 -6
  163. package/src/implementation/structured-elements/grid/layout/grid-layouter.js +14 -11
@@ -0,0 +1,336 @@
1
+ /**
2
+ * PdfStream.ts class for EJ2-PDF
3
+ */
4
+ import { IPdfWriter } from './../../interfaces/i-pdf-writer';
5
+ import { PdfDictionary } from './pdf-dictionary';
6
+ import { PdfNumber } from './pdf-number';
7
+ import { Operators } from './../input-output/pdf-operators';
8
+ import { PdfName } from './pdf-name';
9
+ import { PdfArray } from './pdf-array';
10
+ import { PdfReferenceHolder } from './pdf-reference';
11
+ import { IPdfPrimitive } from './../../interfaces/i-pdf-primitives';
12
+ import { CompressedStreamWriter } from '@syncfusion/ej2-compression';
13
+ import { UnicodeTrueTypeFont } from './../graphics/fonts/unicode-true-type-font';
14
+ /**
15
+ * `PdfStream` class is used to perform stream related primitive operations.
16
+ * @private
17
+ */
18
+ export class PdfStream extends PdfDictionary {
19
+ //Constants
20
+ /**
21
+ * @hidden
22
+ * @private
23
+ */
24
+ private readonly dicPrefix : string = 'stream';
25
+ /**
26
+ * @hidden
27
+ * @private
28
+ */
29
+ private readonly dicSuffix : string = 'endstream';
30
+ //Fields
31
+ /**
32
+ * @hidden
33
+ * @private
34
+ */
35
+ private dataStream2 : string[];
36
+ /**
37
+ * @hidden
38
+ * @private
39
+ */
40
+ private blockEncryption2 : boolean;
41
+ /**
42
+ * @hidden
43
+ * @private
44
+ */
45
+ private bDecrypted2 : boolean;
46
+ /**
47
+ * @hidden
48
+ * @private
49
+ */
50
+ private bCompress2 : boolean;
51
+ /**
52
+ * @hidden
53
+ * @private
54
+ */
55
+ private bEncrypted2 : boolean;
56
+ /**
57
+ * Internal variable to hold `cloned object`.
58
+ * @private
59
+ */
60
+ private clonedObject2 : PdfStream = null;
61
+ /**
62
+ * @hidden
63
+ * @private
64
+ */
65
+ private bCompress : boolean = true;
66
+ /**
67
+ * @hidden
68
+ * @private
69
+ */
70
+ private isImageStream : boolean = false;
71
+ /**
72
+ * @hidden
73
+ * @private
74
+ */
75
+ private isFontStream : boolean = false;
76
+ /**
77
+ * Event. Raise `before the object saves`.
78
+ * @private
79
+ */
80
+ public cmapBeginSave : SaveCmapEventHandler;
81
+ /**
82
+ * Event. Raise `before the object saves`.
83
+ * @private
84
+ */
85
+ public fontProgramBeginSave : SaveFontProgramEventHandler;
86
+ //Constructors
87
+ /**
88
+ * Initialize an instance for `PdfStream` class.
89
+ * @private
90
+ */
91
+ public constructor()
92
+ /**
93
+ * Initialize an instance for `PdfStream` class.
94
+ * @private
95
+ */
96
+ public constructor(dictionary : PdfDictionary, data : string[])
97
+ public constructor(dictionary? : PdfDictionary, data? : string[]) {
98
+ super(dictionary);
99
+ if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {
100
+ this.dataStream2 = [];
101
+ this.dataStream2 = data;
102
+ this.bCompress2 = false;
103
+ } else {
104
+ this.dataStream2 = [];
105
+ this.bCompress2 = true;
106
+ //Pending
107
+ }
108
+ }
109
+ /**
110
+ * Gets the `internal` stream.
111
+ * @private
112
+ */
113
+ public get internalStream() : string[] {
114
+ return this.dataStream2;
115
+ }
116
+ public set internalStream(value : string[]) {
117
+ this.dataStream2 = [];
118
+ this.dataStream2 = value;
119
+ this.modify();
120
+ }
121
+ /**
122
+ * Gets or sets 'is image' flag.
123
+ * @private
124
+ */
125
+ public get isImage() : boolean {
126
+ return this.isImageStream;
127
+ }
128
+ public set isImage(value : boolean) {
129
+ this.isImageStream = value;
130
+ }
131
+ /**
132
+ * Gets or sets 'is font' flag.
133
+ * @private
134
+ */
135
+ public get isFont() : boolean {
136
+ return this.isFontStream;
137
+ }
138
+ public set isFont(value : boolean) {
139
+ this.isFontStream = value;
140
+ }
141
+ /**
142
+ * Gets or sets `compression` flag.
143
+ * @private
144
+ */
145
+ public get compress() : boolean {
146
+ return this.bCompress;
147
+ }
148
+ public set compress(value : boolean) {
149
+ this.bCompress = value;
150
+ this.modify();
151
+ }
152
+ /**
153
+ * Gets or sets the `data`.
154
+ * @private
155
+ */
156
+ public get data() : string[] {
157
+ return this.dataStream2;
158
+ }
159
+ public set data(value : string[]) {
160
+ this.dataStream2 = [];
161
+ this.dataStream2 = value;
162
+ this.modify();
163
+ }
164
+ /**
165
+ * `Clear` the internal stream.
166
+ * @private
167
+ */
168
+ public clearStream() : void {
169
+ this.internalStream = [];
170
+ if (this.items.containsKey(this.dictionaryProperties.filter)) {
171
+ this.remove(this.dictionaryProperties.filter);
172
+ }
173
+ this.bCompress = true;
174
+ this.modify();
175
+ }
176
+ /**
177
+ * `Writes` the specified string.
178
+ * @private
179
+ */
180
+ public write(text : string) : void {
181
+ if (text == null) {
182
+ throw new Error('ArgumentNullException:text');
183
+ }
184
+ if (text.length <= 0) {
185
+ throw new Error('ArgumentException: Can not write an empty string, text');
186
+ }
187
+ this.dataStream2.push(text);
188
+ this.modify();
189
+ }
190
+ /**
191
+ * `Writes` the specified bytes.
192
+ * @private
193
+ */
194
+ public writeBytes(data : number[]) : void {
195
+ if (data === null) {
196
+ throw new Error('ArgumentNullException:data');
197
+ }
198
+ if (data.length <= 0) {
199
+ throw new Error('ArgumentException: Can not write an empty bytes, data');
200
+ }
201
+ let text : string = '';
202
+ for (let i : number = 0; i < data.length; i++) {
203
+ text += String.fromCharCode(data[i]);
204
+ }
205
+ this.dataStream2.push(text);
206
+ this.modify();
207
+ }
208
+ /**
209
+ * Raises event `Cmap BeginSave`.
210
+ * @private
211
+ */
212
+ public onCmapBeginSave() : void {
213
+ (this.cmapBeginSave as SaveCmapEventHandler).sender.cmapBeginSave();
214
+ }
215
+ /**
216
+ * Raises event `Font Program BeginSave`.
217
+ * @private
218
+ */
219
+ protected onFontProgramBeginSave() : void {
220
+ (this.fontProgramBeginSave as SaveFontProgramEventHandler).sender.fontProgramBeginSave();
221
+ }
222
+ /**
223
+ * `Compresses the content` if it's required.
224
+ * @private
225
+ */
226
+ private compressContent(data : string, writer : IPdfWriter) : string {
227
+ if (this.bCompress) {
228
+ let byteArray : number[] = [];
229
+ for (let i : number = 0; i < data.length; i++) {
230
+ byteArray.push(data.charCodeAt(i));
231
+ }
232
+ let dataArray : Uint8Array = new Uint8Array(byteArray);
233
+ let sw : CompressedStreamWriter = new CompressedStreamWriter();
234
+ // data = 'Hello World!!!';
235
+ sw.write(dataArray, 0, dataArray.length);
236
+ sw.close();
237
+ data = sw.getCompressedString;
238
+ this.addFilter(this.dictionaryProperties.flatedecode);
239
+ }
240
+ return data;
241
+ }
242
+ /**
243
+ * `Adds a filter` to the filter array.
244
+ * @private
245
+ */
246
+ public addFilter(filterName : string) : void {
247
+ let obj : IPdfPrimitive = this.items.getValue(this.dictionaryProperties.filter);
248
+ if (obj instanceof PdfReferenceHolder) {
249
+ let rh : PdfReferenceHolder = obj as PdfReferenceHolder;
250
+ obj = rh.object;
251
+ }
252
+ let array : PdfArray = obj as PdfArray;
253
+ let name : PdfName = obj as PdfName;
254
+ if (name != null) {
255
+ array = new PdfArray();
256
+ array.insert(0, name);
257
+ this.items.setValue(this.dictionaryProperties.filter, array);
258
+ }
259
+ name = new PdfName(filterName);
260
+ if (array == null) {
261
+ this.items.setValue(this.dictionaryProperties.filter, name);
262
+ } else {
263
+ array.insert(0, name);
264
+ }
265
+ }
266
+ /**
267
+ * `Saves` the object using the specified writer.
268
+ * @private
269
+ */
270
+ public save(writer : IPdfWriter) : void {
271
+ if (typeof this.cmapBeginSave !== 'undefined') {
272
+ this.onCmapBeginSave();
273
+ }
274
+ if (typeof this.fontProgramBeginSave !== 'undefined') {
275
+ this.onFontProgramBeginSave();
276
+ }
277
+ let data : string = '';
278
+ for (let i : number = 0; i < this.data.length; i++) {
279
+ data = data + this.data[i];
280
+ }
281
+ if (data.length > 1 && !this.isImage && !this.isFont) {
282
+ data = 'q\r\n' + data + 'Q\r\n';
283
+ }
284
+ data = this.compressContent(data, writer);
285
+ let length : number = data.length;
286
+ this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));
287
+ super.save(writer, false);
288
+ writer.write(this.dicPrefix);
289
+ writer.write(Operators.newLine);
290
+ if (data.length > 0) {
291
+ writer.write(data);
292
+ }
293
+ writer.write(Operators.newLine);
294
+ writer.write(this.dicSuffix);
295
+ writer.write(Operators.newLine);
296
+ }
297
+ /**
298
+ * Converts `bytes to string`.
299
+ * @private
300
+ */
301
+ public static bytesToString(byteArray : number[]) : string {
302
+ let output : string = '';
303
+ for (let i : number = 0; i < byteArray.length; i++ ) {
304
+ output = output + String.fromCharCode(byteArray[i]);
305
+ }
306
+ return output;
307
+ }
308
+ }
309
+ export class SaveCmapEventHandler {
310
+ /**
311
+ * @hidden
312
+ * @private
313
+ */
314
+ public sender : UnicodeTrueTypeFont;
315
+ /**
316
+ * New instance for `save section collection event handler` class.
317
+ * @private
318
+ */
319
+ public constructor(sender : UnicodeTrueTypeFont) {
320
+ this.sender = sender;
321
+ }
322
+ }
323
+ export class SaveFontProgramEventHandler {
324
+ /**
325
+ * @hidden
326
+ * @private
327
+ */
328
+ public sender : UnicodeTrueTypeFont;
329
+ /**
330
+ * New instance for `save section collection event handler` class.
331
+ * @private
332
+ */
333
+ public constructor(sender : UnicodeTrueTypeFont) {
334
+ this.sender = sender;
335
+ }
336
+ }