@syncfusion/ej2-pdf-export 24.1.41 → 24.2.3

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 (164) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/ej2-pdf-export.min.js +2 -2
  3. package/dist/ej2-pdf-export.umd.min.js +2 -2
  4. package/dist/ej2-pdf-export.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-pdf-export.es2015.js +157 -28
  6. package/dist/es6/ej2-pdf-export.es2015.js.map +1 -1
  7. package/dist/es6/ej2-pdf-export.es5.js +157 -28
  8. package/dist/es6/ej2-pdf-export.es5.js.map +1 -1
  9. package/dist/global/ej2-pdf-export.min.js +2 -2
  10. package/dist/global/ej2-pdf-export.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +6 -6
  13. package/src/implementation/graphics/pdf-graphics.d.ts +35 -0
  14. package/src/implementation/graphics/pdf-graphics.js +157 -29
  15. package/dist/ts/implementation/actions/action.ts +0 -76
  16. package/dist/ts/implementation/actions/uri-action.ts +0 -52
  17. package/dist/ts/implementation/annotations/action-link-annotation.ts +0 -43
  18. package/dist/ts/implementation/annotations/annotation-collection.ts +0 -159
  19. package/dist/ts/implementation/annotations/annotation.ts +0 -241
  20. package/dist/ts/implementation/annotations/document-link-annotation.ts +0 -118
  21. package/dist/ts/implementation/annotations/link-annotation.ts +0 -32
  22. package/dist/ts/implementation/annotations/pdf-text-web-link.ts +0 -265
  23. package/dist/ts/implementation/annotations/uri-annotation.ts +0 -86
  24. package/dist/ts/implementation/collections/dictionary.ts +0 -150
  25. package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +0 -125
  26. package/dist/ts/implementation/collections/utils.ts +0 -38
  27. package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +0 -39
  28. package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +0 -108
  29. package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +0 -127
  30. package/dist/ts/implementation/document/automatic-fields/composite-field.ts +0 -76
  31. package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +0 -37
  32. package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +0 -75
  33. package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +0 -157
  34. package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +0 -82
  35. package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +0 -60
  36. package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +0 -48
  37. package/dist/ts/implementation/document/pdf-catalog.ts +0 -65
  38. package/dist/ts/implementation/document/pdf-document-base.ts +0 -180
  39. package/dist/ts/implementation/document/pdf-document-template.ts +0 -310
  40. package/dist/ts/implementation/document/pdf-document.ts +0 -342
  41. package/dist/ts/implementation/document/pdf-viewer-preferences.ts +0 -578
  42. package/dist/ts/implementation/drawing/pdf-drawing.ts +0 -218
  43. package/dist/ts/implementation/general/enum.ts +0 -21
  44. package/dist/ts/implementation/general/functions/pdf-function.ts +0 -66
  45. package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +0 -63
  46. package/dist/ts/implementation/general/pdf-cache-collection.ts +0 -97
  47. package/dist/ts/implementation/general/pdf-collection.ts +0 -41
  48. package/dist/ts/implementation/general/pdf-destination.ts +0 -170
  49. package/dist/ts/implementation/graphics/brushes/enum.ts +0 -237
  50. package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +0 -294
  51. package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +0 -68
  52. package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +0 -2438
  53. package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +0 -295
  54. package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +0 -311
  55. package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +0 -406
  56. package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +0 -290
  57. package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +0 -107
  58. package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +0 -304
  59. package/dist/ts/implementation/graphics/constants.ts +0 -31
  60. package/dist/ts/implementation/graphics/enum.ts +0 -413
  61. package/dist/ts/implementation/graphics/figures/arc.ts +0 -133
  62. package/dist/ts/implementation/graphics/figures/base/draw-element.ts +0 -59
  63. package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +0 -260
  64. package/dist/ts/implementation/graphics/figures/base/fill-element.ts +0 -72
  65. package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +0 -34
  66. package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +0 -69
  67. package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +0 -276
  68. package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +0 -205
  69. package/dist/ts/implementation/graphics/figures/ellipse-part.ts +0 -76
  70. package/dist/ts/implementation/graphics/figures/enum.ts +0 -80
  71. package/dist/ts/implementation/graphics/figures/layout-element.ts +0 -132
  72. package/dist/ts/implementation/graphics/figures/path.ts +0 -646
  73. package/dist/ts/implementation/graphics/figures/pdf-template.ts +0 -205
  74. package/dist/ts/implementation/graphics/figures/rectangle-area.ts +0 -108
  75. package/dist/ts/implementation/graphics/figures/text-element.ts +0 -445
  76. package/dist/ts/implementation/graphics/fonts/enum.ts +0 -385
  77. package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +0 -248
  78. package/dist/ts/implementation/graphics/fonts/pdf-font.ts +0 -316
  79. package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +0 -606
  80. package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +0 -243
  81. package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +0 -474
  82. package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +0 -165
  83. package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +0 -958
  84. package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +0 -374
  85. package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +0 -255
  86. package/dist/ts/implementation/graphics/fonts/string-layouter.ts +0 -617
  87. package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +0 -275
  88. package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +0 -206
  89. package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +0 -18
  90. package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +0 -18
  91. package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +0 -14
  92. package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +0 -26
  93. package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +0 -35
  94. package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +0 -94
  95. package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +0 -56
  96. package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +0 -10
  97. package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +0 -14
  98. package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +0 -106
  99. package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +0 -58
  100. package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +0 -33
  101. package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +0 -22
  102. package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +0 -42
  103. package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +0 -1254
  104. package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +0 -26
  105. package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +0 -26
  106. package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +0 -577
  107. package/dist/ts/implementation/graphics/images/byte-array.ts +0 -137
  108. package/dist/ts/implementation/graphics/images/image-decoder.ts +0 -439
  109. package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +0 -110
  110. package/dist/ts/implementation/graphics/images/pdf-image.ts +0 -132
  111. package/dist/ts/implementation/graphics/pdf-color.ts +0 -478
  112. package/dist/ts/implementation/graphics/pdf-graphics.ts +0 -2429
  113. package/dist/ts/implementation/graphics/pdf-margins.ts +0 -124
  114. package/dist/ts/implementation/graphics/pdf-pen.ts +0 -370
  115. package/dist/ts/implementation/graphics/pdf-resources.ts +0 -300
  116. package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +0 -246
  117. package/dist/ts/implementation/graphics/pdf-transparency.ts +0 -93
  118. package/dist/ts/implementation/graphics/unit-convertor.ts +0 -96
  119. package/dist/ts/implementation/input-output/big-endian-writer.ts +0 -121
  120. package/dist/ts/implementation/input-output/cross-table.ts +0 -21
  121. package/dist/ts/implementation/input-output/enum.ts +0 -16
  122. package/dist/ts/implementation/input-output/pdf-cross-table.ts +0 -524
  123. package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +0 -571
  124. package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +0 -194
  125. package/dist/ts/implementation/input-output/pdf-operators.ts +0 -363
  126. package/dist/ts/implementation/input-output/pdf-stream-writer.ts +0 -681
  127. package/dist/ts/implementation/input-output/pdf-writer.ts +0 -88
  128. package/dist/ts/implementation/pages/enum.ts +0 -201
  129. package/dist/ts/implementation/pages/page-added-event-arguments.ts +0 -39
  130. package/dist/ts/implementation/pages/pdf-document-page-collection.ts +0 -180
  131. package/dist/ts/implementation/pages/pdf-page-base.ts +0 -181
  132. package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +0 -348
  133. package/dist/ts/implementation/pages/pdf-page-layer.ts +0 -271
  134. package/dist/ts/implementation/pages/pdf-page-settings.ts +0 -192
  135. package/dist/ts/implementation/pages/pdf-page-size.ts +0 -162
  136. package/dist/ts/implementation/pages/pdf-page-template-element.ts +0 -663
  137. package/dist/ts/implementation/pages/pdf-page.ts +0 -235
  138. package/dist/ts/implementation/pages/pdf-section-collection.ts +0 -187
  139. package/dist/ts/implementation/pages/pdf-section-page-collection.ts +0 -61
  140. package/dist/ts/implementation/pages/pdf-section-templates.ts +0 -96
  141. package/dist/ts/implementation/pages/pdf-section.ts +0 -644
  142. package/dist/ts/implementation/primitives/pdf-array.ts +0 -386
  143. package/dist/ts/implementation/primitives/pdf-boolean.ts +0 -119
  144. package/dist/ts/implementation/primitives/pdf-dictionary.ts +0 -513
  145. package/dist/ts/implementation/primitives/pdf-name.ts +0 -218
  146. package/dist/ts/implementation/primitives/pdf-number.ts +0 -165
  147. package/dist/ts/implementation/primitives/pdf-reference.ts +0 -430
  148. package/dist/ts/implementation/primitives/pdf-stream.ts +0 -306
  149. package/dist/ts/implementation/primitives/pdf-string.ts +0 -397
  150. package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +0 -2027
  151. package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +0 -1193
  152. package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +0 -206
  153. package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +0 -470
  154. package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +0 -853
  155. package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +0 -240
  156. package/dist/ts/implementation/structured-elements/grid/styles/style.ts +0 -424
  157. package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +0 -16
  158. package/dist/ts/interfaces/i-pdf-cache.ts +0 -23
  159. package/dist/ts/interfaces/i-pdf-changable.ts +0 -17
  160. package/dist/ts/interfaces/i-pdf-clonable.ts +0 -12
  161. package/dist/ts/interfaces/i-pdf-primitives.ts +0 -45
  162. package/dist/ts/interfaces/i-pdf-true-type-font.ts +0 -48
  163. package/dist/ts/interfaces/i-pdf-wrapper.ts +0 -13
  164. package/dist/ts/interfaces/i-pdf-writer.ts +0 -29
@@ -1,306 +0,0 @@
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
- * Event. Raise `before the object saves`.
68
- * @private
69
- */
70
- public cmapBeginSave : SaveCmapEventHandler;
71
- /**
72
- * Event. Raise `before the object saves`.
73
- * @private
74
- */
75
- public fontProgramBeginSave : SaveFontProgramEventHandler;
76
- //Constructors
77
- /**
78
- * Initialize an instance for `PdfStream` class.
79
- * @private
80
- */
81
- public constructor()
82
- /**
83
- * Initialize an instance for `PdfStream` class.
84
- * @private
85
- */
86
- public constructor(dictionary : PdfDictionary, data : string[])
87
- public constructor(dictionary? : PdfDictionary, data? : string[]) {
88
- super(dictionary);
89
- if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {
90
- this.dataStream2 = [];
91
- this.dataStream2 = data;
92
- this.bCompress2 = false;
93
- } else {
94
- this.dataStream2 = [];
95
- this.bCompress2 = true;
96
- //Pending
97
- }
98
- }
99
- /**
100
- * Gets the `internal` stream.
101
- * @private
102
- */
103
- public get internalStream() : string[] {
104
- return this.dataStream2;
105
- }
106
- public set internalStream(value : string[]) {
107
- this.dataStream2 = [];
108
- this.dataStream2 = value;
109
- this.modify();
110
- }
111
- /**
112
- * Gets or sets `compression` flag.
113
- * @private
114
- */
115
- public get compress() : boolean {
116
- return this.bCompress;
117
- }
118
- public set compress(value : boolean) {
119
- this.bCompress = value;
120
- this.modify();
121
- }
122
- /**
123
- * Gets or sets the `data`.
124
- * @private
125
- */
126
- public get data() : string[] {
127
- return this.dataStream2;
128
- }
129
- public set data(value : string[]) {
130
- this.dataStream2 = [];
131
- this.dataStream2 = value;
132
- this.modify();
133
- }
134
- /**
135
- * `Clear` the internal stream.
136
- * @private
137
- */
138
- public clearStream() : void {
139
- this.internalStream = [];
140
- if (this.items.containsKey(this.dictionaryProperties.filter)) {
141
- this.remove(this.dictionaryProperties.filter);
142
- }
143
- this.bCompress = true;
144
- this.modify();
145
- }
146
- /**
147
- * `Writes` the specified string.
148
- * @private
149
- */
150
- public write(text : string) : void {
151
- if (text == null) {
152
- throw new Error('ArgumentNullException:text');
153
- }
154
- if (text.length <= 0) {
155
- throw new Error('ArgumentException: Can not write an empty string, text');
156
- }
157
- this.dataStream2.push(text);
158
- this.modify();
159
- }
160
- /**
161
- * `Writes` the specified bytes.
162
- * @private
163
- */
164
- public writeBytes(data : number[]) : void {
165
- if (data === null) {
166
- throw new Error('ArgumentNullException:data');
167
- }
168
- if (data.length <= 0) {
169
- throw new Error('ArgumentException: Can not write an empty bytes, data');
170
- }
171
- let text : string = '';
172
- for (let i : number = 0; i < data.length; i++) {
173
- text += String.fromCharCode(data[i]);
174
- }
175
- this.dataStream2.push(text);
176
- this.modify();
177
- }
178
- /**
179
- * Raises event `Cmap BeginSave`.
180
- * @private
181
- */
182
- public onCmapBeginSave() : void {
183
- (this.cmapBeginSave as SaveCmapEventHandler).sender.cmapBeginSave();
184
- }
185
- /**
186
- * Raises event `Font Program BeginSave`.
187
- * @private
188
- */
189
- protected onFontProgramBeginSave() : void {
190
- (this.fontProgramBeginSave as SaveFontProgramEventHandler).sender.fontProgramBeginSave();
191
- }
192
- /**
193
- * `Compresses the content` if it's required.
194
- * @private
195
- */
196
- private compressContent(data : string, writer : IPdfWriter) : string {
197
- if (this.bCompress) {
198
- let byteArray : number[] = [];
199
- for (let i : number = 0; i < data.length; i++) {
200
- byteArray.push(data.charCodeAt(i));
201
- }
202
- let dataArray : Uint8Array = new Uint8Array(byteArray);
203
- let sw : CompressedStreamWriter = new CompressedStreamWriter();
204
- // data = 'Hello World!!!';
205
- sw.write(dataArray, 0, dataArray.length);
206
- sw.close();
207
- data = sw.getCompressedString;
208
- this.addFilter(this.dictionaryProperties.flatedecode);
209
- }
210
- return data;
211
- }
212
- /**
213
- * `Adds a filter` to the filter array.
214
- * @private
215
- */
216
- public addFilter(filterName : string) : void {
217
- let obj : IPdfPrimitive = this.items.getValue(this.dictionaryProperties.filter);
218
- if (obj instanceof PdfReferenceHolder) {
219
- let rh : PdfReferenceHolder = obj as PdfReferenceHolder;
220
- obj = rh.object;
221
- }
222
- let array : PdfArray = obj as PdfArray;
223
- let name : PdfName = obj as PdfName;
224
- if (name != null) {
225
- array = new PdfArray();
226
- array.insert(0, name);
227
- this.items.setValue(this.dictionaryProperties.filter, array);
228
- }
229
- name = new PdfName(filterName);
230
- if (array == null) {
231
- this.items.setValue(this.dictionaryProperties.filter, name);
232
- } else {
233
- array.insert(0, name);
234
- }
235
- }
236
- /**
237
- * `Saves` the object using the specified writer.
238
- * @private
239
- */
240
- public save(writer : IPdfWriter) : void {
241
- if (typeof this.cmapBeginSave !== 'undefined') {
242
- this.onCmapBeginSave();
243
- }
244
- if (typeof this.fontProgramBeginSave !== 'undefined') {
245
- this.onFontProgramBeginSave();
246
- }
247
- let data : string = '';
248
- for (let i : number = 0; i < this.data.length; i++) {
249
- data = data + this.data[i];
250
- }
251
- if (data.length > 1 && !this.isResource) {
252
- data = 'q\r\n' + data + 'Q\r\n';
253
- }
254
- data = this.compressContent(data, writer);
255
- let length : number = data.length;
256
- this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));
257
- super.save(writer, false);
258
- writer.write(this.dicPrefix);
259
- writer.write(Operators.newLine);
260
- if (data.length > 0) {
261
- writer.write(data);
262
- }
263
- writer.write(Operators.newLine);
264
- writer.write(this.dicSuffix);
265
- writer.write(Operators.newLine);
266
- }
267
- /**
268
- * Converts `bytes to string`.
269
- * @private
270
- */
271
- public static bytesToString(byteArray : number[]) : string {
272
- let output : string = '';
273
- for (let i : number = 0; i < byteArray.length; i++ ) {
274
- output = output + String.fromCharCode(byteArray[i]);
275
- }
276
- return output;
277
- }
278
- }
279
- export class SaveCmapEventHandler {
280
- /**
281
- * @hidden
282
- * @private
283
- */
284
- public sender : UnicodeTrueTypeFont;
285
- /**
286
- * New instance for `save section collection event handler` class.
287
- * @private
288
- */
289
- public constructor(sender : UnicodeTrueTypeFont) {
290
- this.sender = sender;
291
- }
292
- }
293
- export class SaveFontProgramEventHandler {
294
- /**
295
- * @hidden
296
- * @private
297
- */
298
- public sender : UnicodeTrueTypeFont;
299
- /**
300
- * New instance for `save section collection event handler` class.
301
- * @private
302
- */
303
- public constructor(sender : UnicodeTrueTypeFont) {
304
- this.sender = sender;
305
- }
306
- }
@@ -1,397 +0,0 @@
1
- /**
2
- * PdfString.ts class for EJ2-PDF
3
- */
4
- import { IPdfPrimitive } from './../../interfaces/i-pdf-primitives';
5
- import { IPdfWriter } from './../../interfaces/i-pdf-writer';
6
- import { ObjectStatus } from './../input-output/enum';
7
- import { PdfCrossTable } from './../input-output/pdf-cross-table';
8
- /**
9
- * `PdfString` class is used to perform string related primitive operations.
10
- * @private
11
- */
12
- export namespace InternalEnum {
13
- //Internals
14
- /**
15
- * public Enum for `ForceEncoding`.
16
- * @private
17
- */
18
- export enum ForceEncoding {
19
- /**
20
- * Specifies the type of `None`.
21
- * @private
22
- */
23
- None,
24
- /**
25
- * Specifies the type of `Ascii`.
26
- * @private
27
- */
28
- Ascii,
29
- /**
30
- * Specifies the type of `Unicode`.
31
- * @private
32
- */
33
- Unicode
34
- }
35
- /**
36
- * public Enum for `SourceType`.
37
- * @private
38
- */
39
- enum SourceType {
40
- /**
41
- * Specifies the type of `StringValue`.
42
- * @private
43
- */
44
- StringValue,
45
- /**
46
- * Specifies the type of `ByteBuffer`.
47
- * @private
48
- */
49
- ByteBuffer,
50
- }
51
- }
52
- export class PdfString implements IPdfPrimitive {
53
- //constants = ;
54
- /**
55
- * `General markers` for string.
56
- * @private
57
- */
58
- public static readonly stringMark : string = '()';
59
- /**
60
- * `Hex markers` for string.
61
- * @private
62
- */
63
- public static readonly hexStringMark : string = '<>';
64
- /**
65
- * Format of password data.
66
- * @private
67
- */
68
- private static readonly hexFormatPattern : string = '{0:X2}';
69
- //Fields
70
- /**
71
- * Value of the object.
72
- * @private
73
- */
74
- private stringValue : string;
75
- /**
76
- * The byte data of the string.
77
- * @private
78
- */
79
- private data : number[];
80
- /**
81
- * Value indicating whether the string was converted to hex.
82
- * @default false
83
- * @private
84
- */
85
- private bHex : boolean = false;
86
- /**
87
- * Shows the type of object `status` whether it is object registered or other status;
88
- * @private
89
- */
90
- private status1 : ObjectStatus;
91
- /**
92
- * Indicates if the object is currently in `saving state or not`.
93
- * @private
94
- */
95
- private isSaving1 : boolean;
96
- /**
97
- * Internal variable to store the `position`.
98
- * @default -1
99
- * @private
100
- */
101
- private position1 : number = -1;
102
- /**
103
- * Internal variable to hold `PdfCrossTable` reference.
104
- * @private
105
- */
106
- private crossTable : PdfCrossTable;
107
- /**
108
- * Internal variable to hold `cloned object`.
109
- * @default null
110
- * @private
111
- */
112
- private clonedObject1 : PdfString = null;
113
- /**
114
- * Indicates whether to check if the value `has unicode characters`.
115
- * @private
116
- */
117
- private bConverted : boolean;
118
- /**
119
- * Indicates whether we should convert `data to Unicode`.
120
- * @private
121
- */
122
- private bForceEncoding : InternalEnum.ForceEncoding;
123
- /**
124
- * `Shows` if the data of the stream was decrypted.
125
- * @default false
126
- * @private
127
- */
128
- private bDecrypted : boolean = false;
129
- /**
130
- * Holds the `index` number of the object.
131
- * @private
132
- */
133
- private index1 : number;
134
- /**
135
- * Shows if the data of the stream `was decrypted`.
136
- * @default false
137
- * @private
138
- */
139
- private isParentDecrypted : boolean = false;
140
- /**
141
- * Gets a value indicating whether the object is `packed or not`.
142
- * @default false
143
- * @private
144
- */
145
- private isPacked : boolean = false;
146
- /**
147
- * @hidden
148
- * @private
149
- */
150
- public isFormField : boolean = false;
151
- /**
152
- * @hidden
153
- * @private
154
- */
155
- public isColorSpace : boolean = false;
156
- /**
157
- * @hidden
158
- * @private
159
- */
160
- public isHexString : boolean = true;
161
- /**
162
- * @hidden
163
- * @private
164
- */
165
- private encodedBytes : number[];
166
- //constructor
167
- /**
168
- * Initializes a new instance of the `PdfString` class.
169
- * @private
170
- */
171
- public constructor()
172
- /**
173
- * Initializes a new instance of the `PdfString` class.
174
- * @private
175
- */
176
- public constructor(value : string)
177
- public constructor(value? : string) {
178
- if (typeof value === 'undefined') {
179
- this.bHex = false;
180
- } else {
181
- if (!(value.length > 0 && value[0] === '0xfeff')) {
182
- this.stringValue = value;
183
- this.data = [];
184
- for (let i : number = 0; i < value.length; ++i) {
185
- this.data.push(value.charCodeAt(i));
186
- }
187
- }
188
- }
189
- }
190
- //Property
191
- /**
192
- * Gets a value indicating whether string is in `hex`.
193
- * @private
194
- */
195
- public get hex() : boolean {
196
- return this.bHex;
197
- }
198
- /**
199
- * Gets or sets string `value` of the object.
200
- * @private
201
- */
202
- public get value() : string {
203
- return this.stringValue;
204
- }
205
- public set value(value : string) {
206
- this.stringValue = value;
207
- this.data = null;
208
- }
209
- /**
210
- * Gets or sets the `Status` of the specified object.
211
- * @private
212
- */
213
- public get status() : ObjectStatus {
214
- return this.status1;
215
- }
216
- public set status(value : ObjectStatus) {
217
- this.status1 = value;
218
- }
219
- /**
220
- * Gets or sets a value indicating whether this document `is saving` or not.
221
- * @private
222
- */
223
- public get isSaving() : boolean {
224
- return this.isSaving1;
225
- }
226
- public set isSaving(value : boolean) {
227
- this.isSaving1 = value;
228
- }
229
- /**
230
- * Gets or sets the `index` value of the specified object.
231
- * @private
232
- */
233
- public get objectCollectionIndex() : number {
234
- return this.index1;
235
- }
236
- public set objectCollectionIndex(value : number) {
237
- this.index1 = value;
238
- }
239
- /**
240
- * Returns `cloned object`.
241
- * @private
242
- */
243
- public get clonedObject() : IPdfPrimitive {
244
- return this.clonedObject1;
245
- }
246
- /**
247
- * Gets or sets the `position` of the object.
248
- * @private
249
- */
250
- public get position() : number {
251
- return this.position1;
252
- }
253
- public set position(value : number) {
254
- this.position1 = value;
255
- }
256
- /**
257
- * Returns `PdfCrossTable` associated with the object.
258
- * @private
259
- */
260
- public get CrossTable() : PdfCrossTable {
261
- return this.crossTable;
262
- }
263
- /**
264
- * Gets a value indicating whether to check if the value has unicode characters.
265
- * @private
266
- */
267
- public get converted() : boolean {
268
- return this.bConverted;
269
- }
270
- /**
271
- * sets a value indicating whether to check if the value has unicode characters.
272
- * @private
273
- */
274
- public set converted(value : boolean) {
275
- this.bConverted = value;
276
- }
277
- /**
278
- * Gets value indicating whether we should convert data to Unicode.
279
- */
280
- public get encode() : InternalEnum.ForceEncoding {
281
- return this.bForceEncoding;
282
- }
283
- public set encode(value : InternalEnum.ForceEncoding) {
284
- this.bForceEncoding = value;
285
- }
286
- //Methods
287
- /**
288
- * Converts `bytes to string using hex format` for representing string.
289
- * @private
290
- */
291
- public static bytesToHex(bytes : number[]) : string {
292
- if (bytes == null) {
293
- return '';
294
- }
295
- let builder : string = '';
296
- return builder;
297
- }
298
- /**
299
- * `Saves` the object using the specified writer.
300
- * @private
301
- */
302
- public save(writer : IPdfWriter) : void {
303
- if (writer === null) {
304
- throw new Error('ArgumentNullException : writer');
305
- }
306
- if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {
307
- writer.write(this.pdfEncode());
308
- } else {
309
- writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);
310
- }
311
- }
312
- public pdfEncode() : string {
313
- let result : string = '';
314
- if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {
315
- let data : number[] = this.escapeSymbols(this.value);
316
- for (let i : number = 0; i < data.length; i++) {
317
- result += String.fromCharCode(data[i]);
318
- }
319
- result = PdfString.stringMark[0] + result + PdfString.stringMark[1];
320
- } else {
321
- result = this.value;
322
- }
323
- return result;
324
- }
325
- private escapeSymbols(value : string) : number[] {
326
- let data : number[] = [];
327
- for (let i : number = 0; i < value.length; i++) {
328
- let currentData : number = value.charCodeAt(i);
329
- switch (currentData) {
330
- case 40:
331
- case 41:
332
- data.push(92);
333
- data.push(currentData);
334
- break;
335
- case 13:
336
- data.push(92);
337
- data.push(114);
338
- break;
339
- case 92:
340
- data.push(92);
341
- data.push(currentData);
342
- break;
343
-
344
- default:
345
- data.push(currentData);
346
- break;
347
- }
348
- }
349
- return data;
350
- }
351
- /**
352
- * Creates a `copy of PdfString`.
353
- * @private
354
- */
355
- public clone(crossTable : PdfCrossTable) : IPdfPrimitive {
356
- if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {
357
- return this.clonedObject1;
358
- } else {
359
- this.clonedObject1 = null;
360
- }
361
- let newString : PdfString = new PdfString(this.stringValue);
362
- newString.bHex = this.bHex;
363
- newString.crossTable = crossTable;
364
- newString.isColorSpace = this.isColorSpace;
365
- this.clonedObject1 = newString;
366
- return newString;
367
- }
368
- /**
369
- * Converts string to array of unicode symbols.
370
- */
371
- public static toUnicodeArray(value : string, bAddPrefix : boolean) : number[] {
372
- if (value == null) {
373
- throw new Error('Argument Null Exception : value');
374
- }
375
- let startIndex : number = 0;
376
- let output : number[] = [];
377
- for (let i : number = 0; i < value.length; i++) {
378
- let code : number = value.charCodeAt(i);
379
- output.push(code / 256 >>> 0);
380
- output.push(code & 0xff);
381
- }
382
- return output;
383
- }
384
- /**
385
- * Converts byte data to string.
386
- */
387
- public static byteToString(data : number[]) : string {
388
- if (data == null) {
389
- throw new Error('Argument Null Exception : stream');
390
- }
391
- let result : string = '';
392
- for (let i : number = 0; i < data.length; ++i) {
393
- result += String.fromCharCode(data[i]);
394
- }
395
- return result;
396
- }
397
- }