@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.
- package/CHANGELOG.md +10 -0
- package/dist/ej2-pdf-export.min.js +2 -2
- package/dist/ej2-pdf-export.umd.min.js +2 -2
- package/dist/ej2-pdf-export.umd.min.js.map +1 -1
- package/dist/es6/ej2-pdf-export.es2015.js +157 -28
- package/dist/es6/ej2-pdf-export.es2015.js.map +1 -1
- package/dist/es6/ej2-pdf-export.es5.js +157 -28
- package/dist/es6/ej2-pdf-export.es5.js.map +1 -1
- package/dist/global/ej2-pdf-export.min.js +2 -2
- package/dist/global/ej2-pdf-export.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +6 -6
- package/src/implementation/graphics/pdf-graphics.d.ts +35 -0
- package/src/implementation/graphics/pdf-graphics.js +157 -29
- package/dist/ts/implementation/actions/action.ts +0 -76
- package/dist/ts/implementation/actions/uri-action.ts +0 -52
- package/dist/ts/implementation/annotations/action-link-annotation.ts +0 -43
- package/dist/ts/implementation/annotations/annotation-collection.ts +0 -159
- package/dist/ts/implementation/annotations/annotation.ts +0 -241
- package/dist/ts/implementation/annotations/document-link-annotation.ts +0 -118
- package/dist/ts/implementation/annotations/link-annotation.ts +0 -32
- package/dist/ts/implementation/annotations/pdf-text-web-link.ts +0 -265
- package/dist/ts/implementation/annotations/uri-annotation.ts +0 -86
- package/dist/ts/implementation/collections/dictionary.ts +0 -150
- package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +0 -125
- package/dist/ts/implementation/collections/utils.ts +0 -38
- package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +0 -39
- package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +0 -108
- package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +0 -127
- package/dist/ts/implementation/document/automatic-fields/composite-field.ts +0 -76
- package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +0 -37
- package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +0 -75
- package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +0 -157
- package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +0 -82
- package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +0 -60
- package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +0 -48
- package/dist/ts/implementation/document/pdf-catalog.ts +0 -65
- package/dist/ts/implementation/document/pdf-document-base.ts +0 -180
- package/dist/ts/implementation/document/pdf-document-template.ts +0 -310
- package/dist/ts/implementation/document/pdf-document.ts +0 -342
- package/dist/ts/implementation/document/pdf-viewer-preferences.ts +0 -578
- package/dist/ts/implementation/drawing/pdf-drawing.ts +0 -218
- package/dist/ts/implementation/general/enum.ts +0 -21
- package/dist/ts/implementation/general/functions/pdf-function.ts +0 -66
- package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +0 -63
- package/dist/ts/implementation/general/pdf-cache-collection.ts +0 -97
- package/dist/ts/implementation/general/pdf-collection.ts +0 -41
- package/dist/ts/implementation/general/pdf-destination.ts +0 -170
- package/dist/ts/implementation/graphics/brushes/enum.ts +0 -237
- package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +0 -294
- package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +0 -68
- package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +0 -2438
- package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +0 -295
- package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +0 -311
- package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +0 -406
- package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +0 -290
- package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +0 -107
- package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +0 -304
- package/dist/ts/implementation/graphics/constants.ts +0 -31
- package/dist/ts/implementation/graphics/enum.ts +0 -413
- package/dist/ts/implementation/graphics/figures/arc.ts +0 -133
- package/dist/ts/implementation/graphics/figures/base/draw-element.ts +0 -59
- package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +0 -260
- package/dist/ts/implementation/graphics/figures/base/fill-element.ts +0 -72
- package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +0 -34
- package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +0 -69
- package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +0 -276
- package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +0 -205
- package/dist/ts/implementation/graphics/figures/ellipse-part.ts +0 -76
- package/dist/ts/implementation/graphics/figures/enum.ts +0 -80
- package/dist/ts/implementation/graphics/figures/layout-element.ts +0 -132
- package/dist/ts/implementation/graphics/figures/path.ts +0 -646
- package/dist/ts/implementation/graphics/figures/pdf-template.ts +0 -205
- package/dist/ts/implementation/graphics/figures/rectangle-area.ts +0 -108
- package/dist/ts/implementation/graphics/figures/text-element.ts +0 -445
- package/dist/ts/implementation/graphics/fonts/enum.ts +0 -385
- package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +0 -248
- package/dist/ts/implementation/graphics/fonts/pdf-font.ts +0 -316
- package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +0 -606
- package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +0 -243
- package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +0 -474
- package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +0 -165
- package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +0 -958
- package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +0 -374
- package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +0 -255
- package/dist/ts/implementation/graphics/fonts/string-layouter.ts +0 -617
- package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +0 -275
- package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +0 -206
- package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +0 -18
- package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +0 -18
- package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +0 -14
- package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +0 -26
- package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +0 -35
- package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +0 -94
- package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +0 -56
- package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +0 -10
- package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +0 -14
- package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +0 -106
- package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +0 -58
- package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +0 -33
- package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +0 -22
- package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +0 -42
- package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +0 -1254
- package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +0 -26
- package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +0 -26
- package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +0 -577
- package/dist/ts/implementation/graphics/images/byte-array.ts +0 -137
- package/dist/ts/implementation/graphics/images/image-decoder.ts +0 -439
- package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +0 -110
- package/dist/ts/implementation/graphics/images/pdf-image.ts +0 -132
- package/dist/ts/implementation/graphics/pdf-color.ts +0 -478
- package/dist/ts/implementation/graphics/pdf-graphics.ts +0 -2429
- package/dist/ts/implementation/graphics/pdf-margins.ts +0 -124
- package/dist/ts/implementation/graphics/pdf-pen.ts +0 -370
- package/dist/ts/implementation/graphics/pdf-resources.ts +0 -300
- package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +0 -246
- package/dist/ts/implementation/graphics/pdf-transparency.ts +0 -93
- package/dist/ts/implementation/graphics/unit-convertor.ts +0 -96
- package/dist/ts/implementation/input-output/big-endian-writer.ts +0 -121
- package/dist/ts/implementation/input-output/cross-table.ts +0 -21
- package/dist/ts/implementation/input-output/enum.ts +0 -16
- package/dist/ts/implementation/input-output/pdf-cross-table.ts +0 -524
- package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +0 -571
- package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +0 -194
- package/dist/ts/implementation/input-output/pdf-operators.ts +0 -363
- package/dist/ts/implementation/input-output/pdf-stream-writer.ts +0 -681
- package/dist/ts/implementation/input-output/pdf-writer.ts +0 -88
- package/dist/ts/implementation/pages/enum.ts +0 -201
- package/dist/ts/implementation/pages/page-added-event-arguments.ts +0 -39
- package/dist/ts/implementation/pages/pdf-document-page-collection.ts +0 -180
- package/dist/ts/implementation/pages/pdf-page-base.ts +0 -181
- package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +0 -348
- package/dist/ts/implementation/pages/pdf-page-layer.ts +0 -271
- package/dist/ts/implementation/pages/pdf-page-settings.ts +0 -192
- package/dist/ts/implementation/pages/pdf-page-size.ts +0 -162
- package/dist/ts/implementation/pages/pdf-page-template-element.ts +0 -663
- package/dist/ts/implementation/pages/pdf-page.ts +0 -235
- package/dist/ts/implementation/pages/pdf-section-collection.ts +0 -187
- package/dist/ts/implementation/pages/pdf-section-page-collection.ts +0 -61
- package/dist/ts/implementation/pages/pdf-section-templates.ts +0 -96
- package/dist/ts/implementation/pages/pdf-section.ts +0 -644
- package/dist/ts/implementation/primitives/pdf-array.ts +0 -386
- package/dist/ts/implementation/primitives/pdf-boolean.ts +0 -119
- package/dist/ts/implementation/primitives/pdf-dictionary.ts +0 -513
- package/dist/ts/implementation/primitives/pdf-name.ts +0 -218
- package/dist/ts/implementation/primitives/pdf-number.ts +0 -165
- package/dist/ts/implementation/primitives/pdf-reference.ts +0 -430
- package/dist/ts/implementation/primitives/pdf-stream.ts +0 -306
- package/dist/ts/implementation/primitives/pdf-string.ts +0 -397
- package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +0 -2027
- package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +0 -1193
- package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +0 -206
- package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +0 -470
- package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +0 -853
- package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +0 -240
- package/dist/ts/implementation/structured-elements/grid/styles/style.ts +0 -424
- package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +0 -16
- package/dist/ts/interfaces/i-pdf-cache.ts +0 -23
- package/dist/ts/interfaces/i-pdf-changable.ts +0 -17
- package/dist/ts/interfaces/i-pdf-clonable.ts +0 -12
- package/dist/ts/interfaces/i-pdf-primitives.ts +0 -45
- package/dist/ts/interfaces/i-pdf-true-type-font.ts +0 -48
- package/dist/ts/interfaces/i-pdf-wrapper.ts +0 -13
- 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
|
-
}
|