@syncfusion/ej2-pdf-export 19.4.52 → 20.2.36
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/dist/ej2-pdf-export.umd.min.js +1 -1
- package/dist/global/ej2-pdf-export.min.js +1 -1
- package/dist/global/index.d.ts +1 -1
- package/dist/ts/implementation/actions/action.ts +76 -0
- package/dist/ts/implementation/actions/uri-action.ts +52 -0
- package/dist/ts/implementation/annotations/action-link-annotation.ts +43 -0
- package/dist/ts/implementation/annotations/annotation-collection.ts +159 -0
- package/dist/ts/implementation/annotations/annotation.ts +241 -0
- package/dist/ts/implementation/annotations/document-link-annotation.ts +118 -0
- package/dist/ts/implementation/annotations/link-annotation.ts +32 -0
- package/dist/ts/implementation/annotations/pdf-text-web-link.ts +265 -0
- package/dist/ts/implementation/annotations/uri-annotation.ts +86 -0
- package/dist/ts/implementation/collections/dictionary.ts +150 -0
- package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +125 -0
- package/dist/ts/implementation/collections/utils.ts +38 -0
- package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +39 -0
- package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +108 -0
- package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +127 -0
- package/dist/ts/implementation/document/automatic-fields/composite-field.ts +76 -0
- package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +37 -0
- package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +75 -0
- package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +157 -0
- package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +82 -0
- package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +60 -0
- package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +48 -0
- package/dist/ts/implementation/document/pdf-catalog.ts +52 -0
- package/dist/ts/implementation/document/pdf-document-base.ts +166 -0
- package/dist/ts/implementation/document/pdf-document-template.ts +310 -0
- package/dist/ts/implementation/document/pdf-document.ts +342 -0
- package/dist/ts/implementation/drawing/pdf-drawing.ts +218 -0
- package/dist/ts/implementation/general/enum.ts +21 -0
- package/dist/ts/implementation/general/functions/pdf-function.ts +66 -0
- package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +62 -0
- package/dist/ts/implementation/general/pdf-cache-collection.ts +97 -0
- package/dist/ts/implementation/general/pdf-collection.ts +41 -0
- package/dist/ts/implementation/general/pdf-destination.ts +170 -0
- package/dist/ts/implementation/graphics/brushes/enum.ts +237 -0
- package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +294 -0
- package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +68 -0
- package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +2438 -0
- package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +295 -0
- package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +311 -0
- package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +406 -0
- package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +290 -0
- package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +107 -0
- package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +304 -0
- package/dist/ts/implementation/graphics/constants.ts +31 -0
- package/dist/ts/implementation/graphics/enum.ts +413 -0
- package/dist/ts/implementation/graphics/figures/arc.ts +133 -0
- package/dist/ts/implementation/graphics/figures/base/draw-element.ts +59 -0
- package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +260 -0
- package/dist/ts/implementation/graphics/figures/base/fill-element.ts +72 -0
- package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +34 -0
- package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +69 -0
- package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +276 -0
- package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +205 -0
- package/dist/ts/implementation/graphics/figures/ellipse-part.ts +76 -0
- package/dist/ts/implementation/graphics/figures/enum.ts +80 -0
- package/dist/ts/implementation/graphics/figures/layout-element.ts +132 -0
- package/dist/ts/implementation/graphics/figures/path.ts +646 -0
- package/dist/ts/implementation/graphics/figures/pdf-template.ts +205 -0
- package/dist/ts/implementation/graphics/figures/rectangle-area.ts +108 -0
- package/dist/ts/implementation/graphics/figures/text-element.ts +445 -0
- package/dist/ts/implementation/graphics/fonts/enum.ts +385 -0
- package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +248 -0
- package/dist/ts/implementation/graphics/fonts/pdf-font.ts +316 -0
- package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +606 -0
- package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +243 -0
- package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +474 -0
- package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +165 -0
- package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +958 -0
- package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +374 -0
- package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +255 -0
- package/dist/ts/implementation/graphics/fonts/string-layouter.ts +617 -0
- package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +275 -0
- package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +206 -0
- package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +18 -0
- package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +18 -0
- package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +14 -0
- package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +26 -0
- package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +35 -0
- package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +94 -0
- package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +56 -0
- package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +10 -0
- package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +14 -0
- package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +106 -0
- package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +58 -0
- package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +33 -0
- package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +22 -0
- package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +42 -0
- package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +1254 -0
- package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +26 -0
- package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +26 -0
- package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +577 -0
- package/dist/ts/implementation/graphics/images/byte-array.ts +137 -0
- package/dist/ts/implementation/graphics/images/image-decoder.ts +437 -0
- package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +110 -0
- package/dist/ts/implementation/graphics/images/pdf-image.ts +132 -0
- package/dist/ts/implementation/graphics/pdf-color.ts +478 -0
- package/dist/ts/implementation/graphics/pdf-graphics.ts +2424 -0
- package/dist/ts/implementation/graphics/pdf-margins.ts +124 -0
- package/dist/ts/implementation/graphics/pdf-pen.ts +370 -0
- package/dist/ts/implementation/graphics/pdf-resources.ts +300 -0
- package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +246 -0
- package/dist/ts/implementation/graphics/pdf-transparency.ts +93 -0
- package/dist/ts/implementation/graphics/unit-convertor.ts +96 -0
- package/dist/ts/implementation/input-output/big-endian-writer.ts +121 -0
- package/dist/ts/implementation/input-output/cross-table.ts +21 -0
- package/dist/ts/implementation/input-output/enum.ts +16 -0
- package/dist/ts/implementation/input-output/pdf-cross-table.ts +524 -0
- package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +515 -0
- package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +194 -0
- package/dist/ts/implementation/input-output/pdf-operators.ts +363 -0
- package/dist/ts/implementation/input-output/pdf-stream-writer.ts +681 -0
- package/dist/ts/implementation/input-output/pdf-writer.ts +88 -0
- package/dist/ts/implementation/pages/enum.ts +201 -0
- package/dist/ts/implementation/pages/page-added-event-arguments.ts +39 -0
- package/dist/ts/implementation/pages/pdf-document-page-collection.ts +180 -0
- package/dist/ts/implementation/pages/pdf-page-base.ts +181 -0
- package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +348 -0
- package/dist/ts/implementation/pages/pdf-page-layer.ts +271 -0
- package/dist/ts/implementation/pages/pdf-page-settings.ts +192 -0
- package/dist/ts/implementation/pages/pdf-page-size.ts +162 -0
- package/dist/ts/implementation/pages/pdf-page-template-element.ts +659 -0
- package/dist/ts/implementation/pages/pdf-page.ts +235 -0
- package/dist/ts/implementation/pages/pdf-section-collection.ts +187 -0
- package/dist/ts/implementation/pages/pdf-section-page-collection.ts +61 -0
- package/dist/ts/implementation/pages/pdf-section-templates.ts +96 -0
- package/dist/ts/implementation/pages/pdf-section.ts +644 -0
- package/dist/ts/implementation/primitives/pdf-array.ts +386 -0
- package/dist/ts/implementation/primitives/pdf-boolean.ts +119 -0
- package/dist/ts/implementation/primitives/pdf-dictionary.ts +513 -0
- package/dist/ts/implementation/primitives/pdf-name.ts +218 -0
- package/dist/ts/implementation/primitives/pdf-number.ts +165 -0
- package/dist/ts/implementation/primitives/pdf-reference.ts +430 -0
- package/dist/ts/implementation/primitives/pdf-stream.ts +336 -0
- package/dist/ts/implementation/primitives/pdf-string.ts +397 -0
- package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +2027 -0
- package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +1189 -0
- package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +206 -0
- package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +470 -0
- package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +853 -0
- package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +240 -0
- package/dist/ts/implementation/structured-elements/grid/styles/style.ts +424 -0
- package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +16 -0
- package/dist/ts/interfaces/i-pdf-cache.ts +23 -0
- package/dist/ts/interfaces/i-pdf-changable.ts +17 -0
- package/dist/ts/interfaces/i-pdf-clonable.ts +12 -0
- package/dist/ts/interfaces/i-pdf-primitives.ts +45 -0
- package/dist/ts/interfaces/i-pdf-true-type-font.ts +48 -0
- package/dist/ts/interfaces/i-pdf-wrapper.ts +13 -0
- package/dist/ts/interfaces/i-pdf-writer.ts +29 -0
- package/package.json +6 -6
- package/CHANGELOG.md +0 -81
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PdfWriter.ts class for EJ2-PDF
|
|
3
|
+
*/
|
|
4
|
+
import { StreamWriter } from '@syncfusion/ej2-file-utils';
|
|
5
|
+
import { PdfDocumentBase } from './../document/pdf-document-base';
|
|
6
|
+
import { IPdfWriter } from './../../interfaces/i-pdf-writer';
|
|
7
|
+
import { IPdfPrimitive } from './../../interfaces/i-pdf-primitives';
|
|
8
|
+
/**
|
|
9
|
+
* Used to `write a string` into output file.
|
|
10
|
+
* @private
|
|
11
|
+
*/
|
|
12
|
+
export class PdfWriter implements IPdfWriter {
|
|
13
|
+
/**
|
|
14
|
+
* Specifies the current `position`.
|
|
15
|
+
* @private
|
|
16
|
+
*/
|
|
17
|
+
private currentPosition : number;
|
|
18
|
+
/**
|
|
19
|
+
* Specifies the `length` of the stream.
|
|
20
|
+
* @private
|
|
21
|
+
*/
|
|
22
|
+
private streamLength : number;
|
|
23
|
+
/**
|
|
24
|
+
* Check wheather the stream `can seek` or not.
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
private cannotSeek : boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Specifies the parent `document`.
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
32
|
+
private pdfDocument : PdfDocumentBase;
|
|
33
|
+
/**
|
|
34
|
+
* Specifies the `stream`.
|
|
35
|
+
* @private
|
|
36
|
+
*/
|
|
37
|
+
private streamWriter : StreamWriter;
|
|
38
|
+
/**
|
|
39
|
+
* Initialize an instance of `PdfWriter` class.
|
|
40
|
+
* @private
|
|
41
|
+
*/
|
|
42
|
+
constructor(stream : StreamWriter) {
|
|
43
|
+
this.streamWriter = stream;
|
|
44
|
+
}
|
|
45
|
+
//properties
|
|
46
|
+
/**
|
|
47
|
+
* Gets and Sets the `document`.
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
public get document() : PdfDocumentBase {
|
|
51
|
+
return this.pdfDocument;
|
|
52
|
+
}
|
|
53
|
+
public set document(value : PdfDocumentBase) {
|
|
54
|
+
this.pdfDocument = value;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Gets the `position`.
|
|
58
|
+
* @private
|
|
59
|
+
*/
|
|
60
|
+
public get position() : number {
|
|
61
|
+
return this.streamWriter.buffer.size;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Gets the `length` of the stream'.
|
|
65
|
+
* @private
|
|
66
|
+
*/
|
|
67
|
+
public get length() : number {
|
|
68
|
+
return this.streamWriter.buffer.size;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Gets the `stream`.
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
public get stream() : StreamWriter {
|
|
75
|
+
let result : StreamWriter = this.streamWriter;
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
//public Methods
|
|
79
|
+
/**
|
|
80
|
+
* `Writes the specified data`.
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
83
|
+
public write(overload : IPdfPrimitive|number|string|number[]) : void {
|
|
84
|
+
let data : number[] = [];
|
|
85
|
+
let tempOverload : string = <string>overload;
|
|
86
|
+
this.streamWriter.write(tempOverload);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* public Enum for `PdfPageOrientation`.
|
|
3
|
+
* @private
|
|
4
|
+
*/
|
|
5
|
+
export enum PdfPageOrientation {
|
|
6
|
+
/**
|
|
7
|
+
* Specifies the type of `Portrait`.
|
|
8
|
+
* @private
|
|
9
|
+
*/
|
|
10
|
+
Portrait,
|
|
11
|
+
/**
|
|
12
|
+
* Specifies the type of `Landscape`.
|
|
13
|
+
* @private
|
|
14
|
+
*/
|
|
15
|
+
Landscape,
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* public Enum for `PdfPageRotateAngle`.
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
export enum PdfPageRotateAngle {
|
|
22
|
+
/**
|
|
23
|
+
* Specifies the type of `RotateAngle0`.
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
RotateAngle0,
|
|
27
|
+
/**
|
|
28
|
+
* Specifies the type of `RotateAngle90`.
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
RotateAngle90,
|
|
32
|
+
/**
|
|
33
|
+
* Specifies the type of `RotateAngle180`.
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
RotateAngle180,
|
|
37
|
+
/**
|
|
38
|
+
* Specifies the type of `RotateAngle270`.
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
RotateAngle270
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* public Enum for `PdfNumberStyle`.
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
export enum PdfNumberStyle {
|
|
48
|
+
/**
|
|
49
|
+
* Specifies the type of `None`.
|
|
50
|
+
* @private
|
|
51
|
+
*/
|
|
52
|
+
None = 0,
|
|
53
|
+
/**
|
|
54
|
+
* Specifies the type of `Numeric`.
|
|
55
|
+
* @private
|
|
56
|
+
*/
|
|
57
|
+
Numeric,
|
|
58
|
+
/**
|
|
59
|
+
* Specifies the type of `LowerLatin`.
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
LowerLatin,
|
|
63
|
+
/**
|
|
64
|
+
* Specifies the type of `LowerRoman`.
|
|
65
|
+
* @private
|
|
66
|
+
*/
|
|
67
|
+
LowerRoman,
|
|
68
|
+
/**
|
|
69
|
+
* Specifies the type of `UpperLatin`.
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
UpperLatin,
|
|
73
|
+
/**
|
|
74
|
+
* Specifies the type of `UpperRoman`.
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
UpperRoman
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* public Enum for `PdfDockStyle`.
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
83
|
+
export enum PdfDockStyle {
|
|
84
|
+
/**
|
|
85
|
+
* Specifies the type of `None`.
|
|
86
|
+
* @private
|
|
87
|
+
*/
|
|
88
|
+
None,
|
|
89
|
+
/**
|
|
90
|
+
* Specifies the type of `Bottom`.
|
|
91
|
+
* @private
|
|
92
|
+
*/
|
|
93
|
+
Bottom,
|
|
94
|
+
/**
|
|
95
|
+
* Specifies the type of `Top`.
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
Top,
|
|
99
|
+
/**
|
|
100
|
+
* Specifies the type of `Left`.
|
|
101
|
+
* @private
|
|
102
|
+
*/
|
|
103
|
+
Left,
|
|
104
|
+
/**
|
|
105
|
+
* Specifies the type of `Right`.
|
|
106
|
+
* @private
|
|
107
|
+
*/
|
|
108
|
+
Right,
|
|
109
|
+
/**
|
|
110
|
+
* Specifies the type of `Fill`.
|
|
111
|
+
* @private
|
|
112
|
+
*/
|
|
113
|
+
Fill
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* public Enum for `PdfAlignmentStyle`.
|
|
117
|
+
* @private
|
|
118
|
+
*/
|
|
119
|
+
export enum PdfAlignmentStyle {
|
|
120
|
+
/**
|
|
121
|
+
* Specifies the type of `None`.
|
|
122
|
+
* @private
|
|
123
|
+
*/
|
|
124
|
+
None,
|
|
125
|
+
/**
|
|
126
|
+
* Specifies the type of `TopLeft`.
|
|
127
|
+
* @private
|
|
128
|
+
*/
|
|
129
|
+
TopLeft,
|
|
130
|
+
/**
|
|
131
|
+
* Specifies the type of `TopCenter`.
|
|
132
|
+
* @private
|
|
133
|
+
*/
|
|
134
|
+
TopCenter,
|
|
135
|
+
/**
|
|
136
|
+
* Specifies the type of `TopRight`.
|
|
137
|
+
* @private
|
|
138
|
+
*/
|
|
139
|
+
TopRight,
|
|
140
|
+
/**
|
|
141
|
+
* Specifies the type of `MiddleLeft`.
|
|
142
|
+
* @private
|
|
143
|
+
*/
|
|
144
|
+
MiddleLeft,
|
|
145
|
+
/**
|
|
146
|
+
* Specifies the type of `MiddleCenter`.
|
|
147
|
+
* @private
|
|
148
|
+
*/
|
|
149
|
+
MiddleCenter,
|
|
150
|
+
/**
|
|
151
|
+
* Specifies the type of `MiddleRight`.
|
|
152
|
+
* @private
|
|
153
|
+
*/
|
|
154
|
+
MiddleRight,
|
|
155
|
+
/**
|
|
156
|
+
* Specifies the type of `BottomLeft`.
|
|
157
|
+
* @private
|
|
158
|
+
*/
|
|
159
|
+
BottomLeft,
|
|
160
|
+
/**
|
|
161
|
+
* Specifies the type of `BottomCenter`.
|
|
162
|
+
* @private
|
|
163
|
+
*/
|
|
164
|
+
BottomCenter,
|
|
165
|
+
/**
|
|
166
|
+
* Specifies the type of `BottomRight`.
|
|
167
|
+
* @private
|
|
168
|
+
*/
|
|
169
|
+
BottomRight,
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* public Enum for `TemplateType`.
|
|
173
|
+
* @private
|
|
174
|
+
*/
|
|
175
|
+
export enum TemplateType {
|
|
176
|
+
/**
|
|
177
|
+
* Specifies the type of `None`.
|
|
178
|
+
* @private
|
|
179
|
+
*/
|
|
180
|
+
None,
|
|
181
|
+
/**
|
|
182
|
+
* Specifies the type of `Top`.
|
|
183
|
+
* @private
|
|
184
|
+
*/
|
|
185
|
+
Top,
|
|
186
|
+
/**
|
|
187
|
+
* Specifies the type of `Bottom`.
|
|
188
|
+
* @private
|
|
189
|
+
*/
|
|
190
|
+
Bottom,
|
|
191
|
+
/**
|
|
192
|
+
* Specifies the type of `Left`.
|
|
193
|
+
* @private
|
|
194
|
+
*/
|
|
195
|
+
Left,
|
|
196
|
+
/**
|
|
197
|
+
* Specifies the type of `Right`.
|
|
198
|
+
* @private
|
|
199
|
+
*/
|
|
200
|
+
Right
|
|
201
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageAddedEventArguments.ts class for EJ2-PDF
|
|
3
|
+
*/
|
|
4
|
+
import { PdfPage } from './pdf-page';
|
|
5
|
+
/**
|
|
6
|
+
* Provides data for `PageAddedEventHandler` event.
|
|
7
|
+
* This event raises when adding the new PDF page to the PDF document.
|
|
8
|
+
*/
|
|
9
|
+
export class PageAddedEventArgs {
|
|
10
|
+
/**
|
|
11
|
+
* Represents added `page`.
|
|
12
|
+
* @private
|
|
13
|
+
*/
|
|
14
|
+
private pdfPage : PdfPage;
|
|
15
|
+
/**
|
|
16
|
+
* Gets the `newly added page`.
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
public get page() : PdfPage {
|
|
20
|
+
return this.pdfPage;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Initializes a new instance of the `PageAddedEventArgs` class.
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
public constructor()
|
|
27
|
+
/**
|
|
28
|
+
* Initializes a new instance of the `PageAddedEventArgs` class with 'PdfPage'.
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
public constructor(page : PdfPage)
|
|
32
|
+
public constructor(page? : PdfPage) {
|
|
33
|
+
if (typeof page !== 'undefined') {
|
|
34
|
+
this.pdfPage = page;
|
|
35
|
+
} else {
|
|
36
|
+
this.pdfPage = null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { PdfDocument } from './../document/pdf-document';
|
|
2
|
+
import { PdfPage } from './pdf-page';
|
|
3
|
+
import { PdfSection } from './pdf-section';
|
|
4
|
+
import { PdfSectionCollection } from './pdf-section-collection';
|
|
5
|
+
import { PageAddedEventArgs } from './../pages/page-added-event-arguments';
|
|
6
|
+
import { Dictionary } from './../collections/dictionary';
|
|
7
|
+
/**
|
|
8
|
+
* Represents a virtual collection of all the pages in the document.
|
|
9
|
+
* @private
|
|
10
|
+
*/
|
|
11
|
+
export class PdfDocumentPageCollection {
|
|
12
|
+
/**
|
|
13
|
+
* Parent `document`.
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
private document : PdfDocument;
|
|
17
|
+
/**
|
|
18
|
+
* It holds the page collection with the `index`.
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
private pdfPageCollectionIndex : Dictionary<PdfPage, number> = new Dictionary<PdfPage, number>();
|
|
22
|
+
/**
|
|
23
|
+
* Internal variable for `page added event`.
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
public pageAdded : PageAddedEventArgs; //event
|
|
27
|
+
//Property
|
|
28
|
+
/**
|
|
29
|
+
* Gets the total `number of the pages`.
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
32
|
+
public get count() : number {
|
|
33
|
+
return this.countPages();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Gets a `page index` from the document.
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
public get pageCollectionIndex() : Dictionary<PdfPage, number> {
|
|
40
|
+
return this.pdfPageCollectionIndex;
|
|
41
|
+
}
|
|
42
|
+
//constructor
|
|
43
|
+
/**
|
|
44
|
+
* Initializes a new instance of the `PdfPageCollection` class.
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
constructor(document : PdfDocument) {
|
|
48
|
+
this.document = document;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Creates a page and `adds` it to the last section in the document.
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
public add() : PdfPage
|
|
55
|
+
/**
|
|
56
|
+
* Creates a page and `adds` it to the last section in the document.
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
public add(page : PdfPage) : void
|
|
60
|
+
public add(page? : PdfPage) : PdfPage|void {
|
|
61
|
+
if (typeof page === 'undefined') {
|
|
62
|
+
let page : PdfPage = new PdfPage();
|
|
63
|
+
this.add(page);
|
|
64
|
+
return page;
|
|
65
|
+
} else {
|
|
66
|
+
let section : PdfSection = this.getLastSection();
|
|
67
|
+
section.add(page);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Returns `last section` in the document.
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
private getLastSection() : PdfSection {
|
|
75
|
+
let sc : PdfSectionCollection = this.document.sections;
|
|
76
|
+
if (sc.section.length === 0) {
|
|
77
|
+
sc.add();
|
|
78
|
+
}
|
|
79
|
+
let section : PdfSection = sc.section[sc.section.length - 1];
|
|
80
|
+
return section;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Called when `new page has been added`.
|
|
84
|
+
* @private
|
|
85
|
+
*/
|
|
86
|
+
public onPageAdded(args : PageAddedEventArgs) : void {
|
|
87
|
+
// if (PageAdded !== null)
|
|
88
|
+
// {
|
|
89
|
+
// PageAdded(this, args);
|
|
90
|
+
// }
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Gets the `total number of pages`.
|
|
94
|
+
* @private
|
|
95
|
+
*/
|
|
96
|
+
private countPages() : number {
|
|
97
|
+
let sc : PdfSectionCollection = this.document.sections;
|
|
98
|
+
let count : number = 0;
|
|
99
|
+
for (let index : number = 0; index < sc.section.length; index++) {
|
|
100
|
+
count += sc.section[index].count;
|
|
101
|
+
}
|
|
102
|
+
return count;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Gets the `page object` from page index.
|
|
106
|
+
* @private
|
|
107
|
+
*/
|
|
108
|
+
public getPageByIndex(index : number) : PdfPage {
|
|
109
|
+
return this.getPage(index);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Gets a page by its `index` in the document.
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
115
|
+
private getPage(index : number) : PdfPage {
|
|
116
|
+
if ((index < 0) || (index >= this.count)) {
|
|
117
|
+
throw Error('ArgumentOutOfRangeException("index", "Value can not be less 0")');
|
|
118
|
+
}
|
|
119
|
+
let page : PdfPage = null;
|
|
120
|
+
let sectionStartIndex : number = 0;
|
|
121
|
+
let sectionCount : number = 0;
|
|
122
|
+
let pageIndex : number = 0;
|
|
123
|
+
let length : number = this.document.sections.count;
|
|
124
|
+
for (let i : number = 0; i < length; i++) {
|
|
125
|
+
let section : PdfSection = this.document.sections.section[i];
|
|
126
|
+
sectionCount = section.count;
|
|
127
|
+
pageIndex = index - sectionStartIndex;
|
|
128
|
+
// We found a section containing the page.
|
|
129
|
+
if ((index >= sectionStartIndex && pageIndex < sectionCount)) {
|
|
130
|
+
page = section.getPages()[pageIndex] as PdfPage;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
sectionStartIndex += sectionCount;
|
|
134
|
+
}
|
|
135
|
+
return page;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Gets the `index of` the page in the document.
|
|
139
|
+
* @private
|
|
140
|
+
*/
|
|
141
|
+
public indexOf(page : PdfPage) : number {
|
|
142
|
+
let index : number = -1;
|
|
143
|
+
if (page == null) {
|
|
144
|
+
throw new Error('ArgumentNullException: page');
|
|
145
|
+
} else {
|
|
146
|
+
let numPages : number = 0;
|
|
147
|
+
for (let i : number = 0, len : number = this.document.sections.count; i < len; i++) {
|
|
148
|
+
let section : PdfSection = this.document.sections.pdfSectionCollection(i);
|
|
149
|
+
index = section.indexOf(page);
|
|
150
|
+
if (index >= 0) {
|
|
151
|
+
index += numPages;
|
|
152
|
+
break;
|
|
153
|
+
} else {
|
|
154
|
+
index = -1;
|
|
155
|
+
}
|
|
156
|
+
numPages += section.count;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return index;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* `Removes` the specified page.
|
|
163
|
+
* @private
|
|
164
|
+
*/
|
|
165
|
+
public remove(page : PdfPage) : PdfSection {
|
|
166
|
+
if (page == null) {
|
|
167
|
+
throw Error('ArgumentNullException("page")');
|
|
168
|
+
}
|
|
169
|
+
let section : PdfSection = null;
|
|
170
|
+
let len : number;
|
|
171
|
+
for (let i : number = 0, len : number = this.document.sections.count; i < len; i++) {
|
|
172
|
+
section = this.document.sections.pdfSectionCollection(i);
|
|
173
|
+
if (section.pages.contains(page)) {
|
|
174
|
+
section.pages.remove(page);
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return section;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { PdfDictionary } from './../primitives/pdf-dictionary';
|
|
2
|
+
import { IPdfWrapper } from './../../interfaces/i-pdf-wrapper';
|
|
3
|
+
import { IPdfPrimitive } from './../../interfaces/i-pdf-primitives';
|
|
4
|
+
import { PdfArray } from './../primitives/pdf-array';
|
|
5
|
+
import { PointF, SizeF } from './../drawing/pdf-drawing';
|
|
6
|
+
import { PdfPageLayerCollection } from './pdf-page-layer-collection';
|
|
7
|
+
import { PdfPageLayer } from './pdf-page-layer';
|
|
8
|
+
import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';
|
|
9
|
+
import { PdfReferenceHolder } from './../primitives/pdf-reference';
|
|
10
|
+
import { PdfResources } from './../graphics/pdf-resources';
|
|
11
|
+
import { PdfSection } from './pdf-section';
|
|
12
|
+
/**
|
|
13
|
+
* The abstract base class for all pages,
|
|
14
|
+
* `PdfPageBase` class provides methods and properties to create PDF pages and its elements.
|
|
15
|
+
* @private
|
|
16
|
+
*/
|
|
17
|
+
export abstract class PdfPageBase implements IPdfWrapper {
|
|
18
|
+
/**
|
|
19
|
+
* Collection of the `layers` of the page.
|
|
20
|
+
* @private
|
|
21
|
+
*/
|
|
22
|
+
private layerCollection : PdfPageLayerCollection;
|
|
23
|
+
/**
|
|
24
|
+
* Stores the instance of `PdfDictionary` class.
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
private pageDictionary : PdfDictionary;
|
|
28
|
+
/**
|
|
29
|
+
* `Index` of the default layer.
|
|
30
|
+
* @default -1.
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
private defLayerIndex : number = -1;
|
|
34
|
+
/**
|
|
35
|
+
* Local variable to store if page `updated`.
|
|
36
|
+
* @default false.
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
private modified : boolean = false;
|
|
40
|
+
/**
|
|
41
|
+
* Stores the instance of `PdfResources`.
|
|
42
|
+
* @hidden
|
|
43
|
+
* @private
|
|
44
|
+
*/
|
|
45
|
+
private resources : PdfResources;
|
|
46
|
+
/**
|
|
47
|
+
* Instance of `DictionaryProperties` class.
|
|
48
|
+
* @hidden
|
|
49
|
+
* @private
|
|
50
|
+
*/
|
|
51
|
+
protected dictionaryProperties : DictionaryProperties = new DictionaryProperties();
|
|
52
|
+
/**
|
|
53
|
+
* Specifies the current `section`.
|
|
54
|
+
* @hidden
|
|
55
|
+
* @private
|
|
56
|
+
*/
|
|
57
|
+
private pdfSection : PdfSection;
|
|
58
|
+
//Properties
|
|
59
|
+
/**
|
|
60
|
+
* Gets the `section` of a page.
|
|
61
|
+
* @private
|
|
62
|
+
*/
|
|
63
|
+
public get section() : PdfSection {
|
|
64
|
+
// if (this.pdfSection === null) {
|
|
65
|
+
// throw new Error('PdfException : Page must be added to some section before using.');
|
|
66
|
+
// }
|
|
67
|
+
return this.pdfSection;
|
|
68
|
+
}
|
|
69
|
+
public set section(value : PdfSection) {
|
|
70
|
+
this.pdfSection = value;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Gets the page `dictionary`.
|
|
74
|
+
* @private
|
|
75
|
+
*/
|
|
76
|
+
public get dictionary() : PdfDictionary {
|
|
77
|
+
return this.pageDictionary;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Gets the wrapped `element`.
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
83
|
+
public get element() : IPdfPrimitive {
|
|
84
|
+
return this.pageDictionary;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Gets the `default layer` of the page (Read only).
|
|
88
|
+
* @private
|
|
89
|
+
*/
|
|
90
|
+
public get defaultLayer() : PdfPageLayer {
|
|
91
|
+
let layer : PdfPageLayerCollection = this.layers;
|
|
92
|
+
let index : number = this.defaultLayerIndex;
|
|
93
|
+
let returnlayer : PdfPageLayer = layer.items(index) as PdfPageLayer;
|
|
94
|
+
return returnlayer;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Gets or sets `index of the default layer`.
|
|
98
|
+
* @private
|
|
99
|
+
*/
|
|
100
|
+
public get defaultLayerIndex() : number {
|
|
101
|
+
if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {
|
|
102
|
+
let layer : PdfPageLayer = this.layerCollection.add();
|
|
103
|
+
this.defLayerIndex = this.layerCollection.indexOf(layer);
|
|
104
|
+
}
|
|
105
|
+
return this.defLayerIndex;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Gets the collection of the page's `layers` (Read only).
|
|
109
|
+
* @private
|
|
110
|
+
*/
|
|
111
|
+
public get layers() : PdfPageLayerCollection {
|
|
112
|
+
if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {
|
|
113
|
+
this.layerCollection = new PdfPageLayerCollection(this);
|
|
114
|
+
}
|
|
115
|
+
return this.layerCollection;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Return an instance of `PdfResources` class.
|
|
119
|
+
* @private
|
|
120
|
+
*/
|
|
121
|
+
public getResources() : PdfResources {
|
|
122
|
+
if (this.resources == null) {
|
|
123
|
+
this.resources = new PdfResources();
|
|
124
|
+
this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);
|
|
125
|
+
}
|
|
126
|
+
return this.resources;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Gets `array of page's content`.
|
|
130
|
+
* @private
|
|
131
|
+
*/
|
|
132
|
+
public get contents(): PdfArray {
|
|
133
|
+
let obj : IPdfPrimitive = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);
|
|
134
|
+
let contents : PdfArray = obj as PdfArray;
|
|
135
|
+
let rh : PdfReferenceHolder = obj as PdfReferenceHolder;
|
|
136
|
+
if (contents == null) {
|
|
137
|
+
contents = new PdfArray();
|
|
138
|
+
this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);
|
|
139
|
+
}
|
|
140
|
+
return contents;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Gets or sets` index of the default layer`.
|
|
144
|
+
* @private
|
|
145
|
+
*/
|
|
146
|
+
public set defaultLayerIndex(value : number) {
|
|
147
|
+
if (value < 0 || value > this.layers.count - 1) {
|
|
148
|
+
throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');
|
|
149
|
+
} else {
|
|
150
|
+
this.defLayerIndex = value;
|
|
151
|
+
this.modified = true;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Sets the `resources`.
|
|
156
|
+
* @private
|
|
157
|
+
*/
|
|
158
|
+
public setResources(res : PdfResources) : void {
|
|
159
|
+
this.resources = res;
|
|
160
|
+
this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);
|
|
161
|
+
this.modified = true;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Gets the `size of the page` (Read only).
|
|
165
|
+
* @private
|
|
166
|
+
*/
|
|
167
|
+
public abstract get size() : SizeF;
|
|
168
|
+
/**
|
|
169
|
+
* Gets the `origin of the page`.
|
|
170
|
+
* @private
|
|
171
|
+
*/
|
|
172
|
+
public abstract get origin() : PointF;
|
|
173
|
+
//constructors
|
|
174
|
+
/**
|
|
175
|
+
* Initializes a new instance of the `PdfPageBase` class.
|
|
176
|
+
* @private
|
|
177
|
+
*/
|
|
178
|
+
constructor(dictionary : PdfDictionary) {
|
|
179
|
+
this.pageDictionary = dictionary;
|
|
180
|
+
}
|
|
181
|
+
}
|