@syncfusion/ej2-pdf-export 21.2.10 → 22.1.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +1 -0
- package/dist/ej2-pdf-export.min.js +1 -1
- 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 +439 -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 +1193 -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
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ElementLayouter.ts class for EJ2-PDF
|
|
3
|
+
*/
|
|
4
|
+
import { RectangleF } from './../../../drawing/pdf-drawing';
|
|
5
|
+
import { PdfPage } from './../../../pages/pdf-page';
|
|
6
|
+
import { PdfLayoutType, PdfLayoutBreakType } from './../enum';
|
|
7
|
+
import { PdfLayoutElement } from './../layout-element';
|
|
8
|
+
import { PdfSection } from './../../../pages/pdf-section';
|
|
9
|
+
/**
|
|
10
|
+
* Base class for `elements lay outing`.
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
13
|
+
export abstract class ElementLayouter {
|
|
14
|
+
// Fields
|
|
15
|
+
/**
|
|
16
|
+
* Layout the `element`.
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
private layoutElement : PdfLayoutElement;
|
|
20
|
+
// Constructor
|
|
21
|
+
/**
|
|
22
|
+
* Initializes a new instance of the `ElementLayouter` class.
|
|
23
|
+
* @private
|
|
24
|
+
*/
|
|
25
|
+
public constructor(element : PdfLayoutElement) {
|
|
26
|
+
this.layoutElement = element;
|
|
27
|
+
}
|
|
28
|
+
// Properties
|
|
29
|
+
/**
|
|
30
|
+
* Gets the `element`.
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
public get elements() : PdfLayoutElement {
|
|
34
|
+
return this.layoutElement;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Gets the `element`.
|
|
38
|
+
* @private
|
|
39
|
+
*/
|
|
40
|
+
public getElement() : PdfLayoutElement {
|
|
41
|
+
return this.layoutElement;
|
|
42
|
+
}
|
|
43
|
+
// Implementation
|
|
44
|
+
/**
|
|
45
|
+
* `Layouts` the element.
|
|
46
|
+
* @private
|
|
47
|
+
*/
|
|
48
|
+
public layout(param : PdfLayoutParams) : PdfLayoutResult {
|
|
49
|
+
return this.layoutInternal(param);
|
|
50
|
+
}
|
|
51
|
+
public Layouter(param : PdfLayoutParams) : PdfLayoutResult {
|
|
52
|
+
return this.layoutInternal(param);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns the `next page`.
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
public getNextPage(currentPage : PdfPage) : PdfPage {
|
|
59
|
+
let section : PdfSection = currentPage.section;
|
|
60
|
+
let nextPage : PdfPage = section.add() as PdfPage;
|
|
61
|
+
return nextPage;
|
|
62
|
+
}
|
|
63
|
+
protected getPaginateBounds(param: PdfLayoutParams): RectangleF {
|
|
64
|
+
if ((param == null)) {
|
|
65
|
+
throw new Error('ArgumentNullException : param');
|
|
66
|
+
}
|
|
67
|
+
let result : RectangleF = param.format.usePaginateBounds ? param.format.paginateBounds
|
|
68
|
+
: new RectangleF(param.bounds.x, 0, param.bounds.width, param.bounds.height);
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* `Layouts` the element.
|
|
73
|
+
* @private
|
|
74
|
+
*/
|
|
75
|
+
protected abstract layoutInternal(param : PdfLayoutParams) : PdfLayoutResult;
|
|
76
|
+
// protected abstract layoutInternal(param : PdfLayoutParams, isBoundsChanged ?: boolean) : PdfLayoutResult;
|
|
77
|
+
}
|
|
78
|
+
export class PdfLayoutFormat {
|
|
79
|
+
// Fields
|
|
80
|
+
/**
|
|
81
|
+
* Indicates whether `PaginateBounds` were set and should be used or not.
|
|
82
|
+
* @private
|
|
83
|
+
*/
|
|
84
|
+
private boundsSet : boolean;
|
|
85
|
+
/**
|
|
86
|
+
* `Bounds` for the paginating.
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
private layoutPaginateBounds : RectangleF;
|
|
90
|
+
/**
|
|
91
|
+
* `Layout` type of the element.
|
|
92
|
+
* @private
|
|
93
|
+
*/
|
|
94
|
+
private layoutType : PdfLayoutType;
|
|
95
|
+
/**
|
|
96
|
+
* `Break` type of the element.
|
|
97
|
+
* @private
|
|
98
|
+
*/
|
|
99
|
+
private breakType : PdfLayoutBreakType;
|
|
100
|
+
|
|
101
|
+
// Properties
|
|
102
|
+
/**
|
|
103
|
+
* Gets or sets `layout` type of the element.
|
|
104
|
+
* @private
|
|
105
|
+
*/
|
|
106
|
+
public get layout() : PdfLayoutType {
|
|
107
|
+
// if (typeof this.layoutType === 'undefined' || this.layoutType == null) {
|
|
108
|
+
// this.layoutType = PdfLayoutType.Paginate;
|
|
109
|
+
// }
|
|
110
|
+
return this.layoutType;
|
|
111
|
+
}
|
|
112
|
+
public set layout(value : PdfLayoutType) {
|
|
113
|
+
this.layoutType = value;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Gets or sets `break` type of the element.
|
|
117
|
+
* @private
|
|
118
|
+
*/
|
|
119
|
+
public get break() : PdfLayoutBreakType {
|
|
120
|
+
// if (typeof this.breakType === 'undefined' || this.boundsSet == null) {
|
|
121
|
+
// this.breakType = PdfLayoutBreakType.FitPage;
|
|
122
|
+
// }
|
|
123
|
+
return this.breakType;
|
|
124
|
+
}
|
|
125
|
+
public set break(value : PdfLayoutBreakType) {
|
|
126
|
+
this.breakType = value;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Gets or sets the `bounds` on the next page.
|
|
130
|
+
* @private
|
|
131
|
+
*/
|
|
132
|
+
public get paginateBounds() : RectangleF {
|
|
133
|
+
if (typeof this.layoutPaginateBounds === 'undefined' && this.layoutPaginateBounds == null) {
|
|
134
|
+
this.layoutPaginateBounds = new RectangleF(0, 0, 0, 0);
|
|
135
|
+
}
|
|
136
|
+
return this.layoutPaginateBounds;
|
|
137
|
+
}
|
|
138
|
+
public set paginateBounds(value : RectangleF) {
|
|
139
|
+
this.layoutPaginateBounds = value;
|
|
140
|
+
this.boundsSet = true;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Gets a value indicating whether [`use paginate bounds`].
|
|
144
|
+
* @private
|
|
145
|
+
*/
|
|
146
|
+
public get usePaginateBounds() : boolean {
|
|
147
|
+
// if (typeof this.boundsSet === 'undefined' || this.boundsSet == null) {
|
|
148
|
+
// this.boundsSet = false;
|
|
149
|
+
// }
|
|
150
|
+
return this.boundsSet;
|
|
151
|
+
}
|
|
152
|
+
// Constructors
|
|
153
|
+
/**
|
|
154
|
+
* Initializes a new instance of the `PdfLayoutFormat` class.
|
|
155
|
+
* @private
|
|
156
|
+
*/
|
|
157
|
+
public constructor()
|
|
158
|
+
/**
|
|
159
|
+
* Initializes a new instance of the `PdfLayoutFormat` class.
|
|
160
|
+
* @private
|
|
161
|
+
*/
|
|
162
|
+
public constructor(baseFormat : PdfLayoutFormat)
|
|
163
|
+
public constructor(baseFormat ?: PdfLayoutFormat) {
|
|
164
|
+
if (typeof baseFormat === 'undefined') {
|
|
165
|
+
//
|
|
166
|
+
} else {
|
|
167
|
+
this.break = baseFormat.break;
|
|
168
|
+
this.layout = baseFormat.layout;
|
|
169
|
+
this.paginateBounds = baseFormat.paginateBounds;
|
|
170
|
+
this.boundsSet = baseFormat.usePaginateBounds;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
export class PdfLayoutParams {
|
|
175
|
+
// Fields
|
|
176
|
+
/**
|
|
177
|
+
* The last `page` where the element was drawn.
|
|
178
|
+
* @private
|
|
179
|
+
*/
|
|
180
|
+
private pdfPage : PdfPage;
|
|
181
|
+
/**
|
|
182
|
+
* The `bounds` of the element on the last page where it was drawn.
|
|
183
|
+
* @private
|
|
184
|
+
*/
|
|
185
|
+
private layoutBounds : RectangleF;
|
|
186
|
+
/**
|
|
187
|
+
* Layout settings as `format`.
|
|
188
|
+
* @private
|
|
189
|
+
*/
|
|
190
|
+
private layoutFormat : PdfLayoutFormat;
|
|
191
|
+
// Properties
|
|
192
|
+
/**
|
|
193
|
+
* Gets or sets the layout `page` for the element.
|
|
194
|
+
* @private
|
|
195
|
+
*/
|
|
196
|
+
public get page() : PdfPage {
|
|
197
|
+
return this.pdfPage;
|
|
198
|
+
}
|
|
199
|
+
public set page(value : PdfPage) {
|
|
200
|
+
this.pdfPage = value;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Gets or sets layout `bounds` for the element.
|
|
204
|
+
* @private
|
|
205
|
+
*/
|
|
206
|
+
public get bounds() : RectangleF {
|
|
207
|
+
return new RectangleF(this.layoutBounds.x, this.layoutBounds.y, this.layoutBounds.width, this.layoutBounds.height);
|
|
208
|
+
}
|
|
209
|
+
public set bounds(value : RectangleF) {
|
|
210
|
+
this.layoutBounds = value;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Gets or sets `layout settings` for the element.
|
|
214
|
+
* @private
|
|
215
|
+
*/
|
|
216
|
+
public get format() : PdfLayoutFormat {
|
|
217
|
+
return this.layoutFormat;
|
|
218
|
+
}
|
|
219
|
+
public set format(value : PdfLayoutFormat) {
|
|
220
|
+
this.layoutFormat = value;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
export class PdfLayoutResult {
|
|
224
|
+
// Fields
|
|
225
|
+
/**
|
|
226
|
+
* The last `page` where the element was drawn.
|
|
227
|
+
* @private
|
|
228
|
+
*/
|
|
229
|
+
private pdfPage : PdfPage;
|
|
230
|
+
/**
|
|
231
|
+
* The `bounds` of the element on the last page where it was drawn.
|
|
232
|
+
* @private
|
|
233
|
+
*/
|
|
234
|
+
private layoutBounds : RectangleF;
|
|
235
|
+
|
|
236
|
+
// Properties
|
|
237
|
+
/**
|
|
238
|
+
* Gets the last `page` where the element was drawn.
|
|
239
|
+
* @private
|
|
240
|
+
*/
|
|
241
|
+
public get page() : PdfPage {
|
|
242
|
+
return this.pdfPage;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Gets the `bounds` of the element on the last page where it was drawn.
|
|
246
|
+
* @private
|
|
247
|
+
*/
|
|
248
|
+
public get bounds() : RectangleF {
|
|
249
|
+
return this.layoutBounds;
|
|
250
|
+
}
|
|
251
|
+
// Constructors
|
|
252
|
+
/**
|
|
253
|
+
* Initializes the new instance of `PdfLayoutResult` class.
|
|
254
|
+
* @private
|
|
255
|
+
*/
|
|
256
|
+
public constructor(page : PdfPage, bounds : RectangleF) {
|
|
257
|
+
this.pdfPage = page;
|
|
258
|
+
this.layoutBounds = bounds;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PdfFillElement.ts class for EJ2-PDF
|
|
3
|
+
*/
|
|
4
|
+
import { PdfDrawElement } from './draw-element';
|
|
5
|
+
import { PdfPen } from './../../pdf-pen';
|
|
6
|
+
import { PdfBrush } from './../../brushes/pdf-brush';
|
|
7
|
+
import {PdfColor} from './../../pdf-color';
|
|
8
|
+
/**
|
|
9
|
+
* Represents a base class for all page graphics elements.
|
|
10
|
+
*/
|
|
11
|
+
export abstract class PdfFillElement extends PdfDrawElement {
|
|
12
|
+
// Fields
|
|
13
|
+
/**
|
|
14
|
+
* Internal variable to store pen.
|
|
15
|
+
* @private
|
|
16
|
+
*/
|
|
17
|
+
private mbrush : PdfBrush = null;
|
|
18
|
+
// Constructor
|
|
19
|
+
/**
|
|
20
|
+
* Initializes a new instance of the `PdfFillElement` class.
|
|
21
|
+
* @protected
|
|
22
|
+
*/
|
|
23
|
+
protected constructor()
|
|
24
|
+
/**
|
|
25
|
+
* Initializes a new instance of the `PdfFillElement` class.
|
|
26
|
+
* @protected
|
|
27
|
+
*/
|
|
28
|
+
protected constructor(pen: PdfPen)
|
|
29
|
+
/**
|
|
30
|
+
* Initializes a new instance of the `PdfFillElement` class.
|
|
31
|
+
* @protected
|
|
32
|
+
*/
|
|
33
|
+
protected constructor(brush: PdfBrush)
|
|
34
|
+
/**
|
|
35
|
+
* Initializes a new instance of the `PdfFillElement` class.
|
|
36
|
+
* @protected
|
|
37
|
+
*/
|
|
38
|
+
protected constructor(pen: PdfPen, brush: PdfBrush)
|
|
39
|
+
/**
|
|
40
|
+
* Initializes a new instance of the `PdfFillElement` class.
|
|
41
|
+
* @protected
|
|
42
|
+
*/
|
|
43
|
+
protected constructor(arg1 ?: PdfPen|PdfBrush, arg2 ?: PdfBrush) {
|
|
44
|
+
super();
|
|
45
|
+
if (typeof arg1 === 'undefined') {
|
|
46
|
+
//
|
|
47
|
+
} else if (arg1 instanceof PdfPen) {
|
|
48
|
+
super(arg1);
|
|
49
|
+
} else {
|
|
50
|
+
this.mbrush = arg2;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Properties
|
|
54
|
+
/**
|
|
55
|
+
* Gets or sets a brush of the element.
|
|
56
|
+
* @public
|
|
57
|
+
*/
|
|
58
|
+
public get brush(): PdfBrush {
|
|
59
|
+
return this.mbrush;
|
|
60
|
+
}
|
|
61
|
+
public set brush(value: PdfBrush) {
|
|
62
|
+
this.mbrush = value;
|
|
63
|
+
}
|
|
64
|
+
// Implementation
|
|
65
|
+
/**
|
|
66
|
+
* Gets the pen. If both pen and brush are not explicitly defined, default pen will be used.
|
|
67
|
+
* @protected
|
|
68
|
+
*/
|
|
69
|
+
protected obtainPen(): PdfPen {
|
|
70
|
+
return ((this.mbrush == null) && (this.pen == null)) ? new PdfPen(new PdfColor(0, 0, 0)) : this.pen;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PdfGraphicsElement.ts class for EJ2-PDF
|
|
3
|
+
*/
|
|
4
|
+
import { PdfGraphics, PdfGraphicsState } from './../../pdf-graphics';
|
|
5
|
+
/**
|
|
6
|
+
* Represents a base class for all page graphics elements.
|
|
7
|
+
*/
|
|
8
|
+
export abstract class PdfGraphicsElement {
|
|
9
|
+
// Constructors
|
|
10
|
+
protected constructor() {
|
|
11
|
+
//
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* `Draws` the page number field.
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
public drawHelper(graphics : PdfGraphics, x : number, y : number) : void {
|
|
18
|
+
let bNeedSave : boolean = (x !== 0 || y !== 0);
|
|
19
|
+
let gState : PdfGraphicsState = null;
|
|
20
|
+
// Translate co-ordinates.
|
|
21
|
+
if (bNeedSave) {
|
|
22
|
+
// Save state.
|
|
23
|
+
gState = graphics.save();
|
|
24
|
+
graphics.translateTransform((x as number), y);
|
|
25
|
+
}
|
|
26
|
+
this.drawInternal(graphics);
|
|
27
|
+
if (bNeedSave) {
|
|
28
|
+
// Restore state.
|
|
29
|
+
graphics.restore(gState);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// implementation
|
|
33
|
+
protected abstract drawInternal(graphics : PdfGraphics) : void;
|
|
34
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PdfShapeElement.ts class for EJ2-PDF
|
|
3
|
+
* @private
|
|
4
|
+
*/
|
|
5
|
+
import { PdfLayoutResult, PdfLayoutParams } from './element-layouter';
|
|
6
|
+
import { RectangleF, PointF } from './../../../drawing/pdf-drawing';
|
|
7
|
+
import { PdfLayoutElement } from './../layout-element';
|
|
8
|
+
import { ShapeLayouter } from './shape-layouter';
|
|
9
|
+
import { PdfGraphics, PdfGraphicsState } from './../../pdf-graphics';
|
|
10
|
+
/**
|
|
11
|
+
* Base class for the main shapes.
|
|
12
|
+
* @private
|
|
13
|
+
*/
|
|
14
|
+
export abstract class PdfShapeElement extends PdfLayoutElement {
|
|
15
|
+
// methods
|
|
16
|
+
/**
|
|
17
|
+
* Gets the bounds.
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
public getBounds() : RectangleF {
|
|
21
|
+
let rect : RectangleF = this.getBoundsInternal();
|
|
22
|
+
return rect;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* `drawGraphicsHelper` the graphics.
|
|
26
|
+
* @public
|
|
27
|
+
*/
|
|
28
|
+
public drawGraphicsHelper(graphics: PdfGraphics, location: PointF) : void {
|
|
29
|
+
if ((graphics == null)) {
|
|
30
|
+
throw new Error('ArgumentNullException :graphics');
|
|
31
|
+
}
|
|
32
|
+
this.drawShapeHelper(graphics, location.x, location.y);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* `drawShapeHelper` the graphics.
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
private drawShapeHelper(graphics : PdfGraphics, x : number, y : number) : void {
|
|
39
|
+
let bNeedSave : boolean = (x !== 0.5 || y !== 0.5);
|
|
40
|
+
let gState : PdfGraphicsState = null;
|
|
41
|
+
// Translate co-ordinates.
|
|
42
|
+
if (bNeedSave) {
|
|
43
|
+
// Save state.
|
|
44
|
+
gState = graphics.save();
|
|
45
|
+
graphics.translateTransform((x as number), y);
|
|
46
|
+
}
|
|
47
|
+
this.drawInternal(graphics);
|
|
48
|
+
if (bNeedSave) {
|
|
49
|
+
// Restore state.
|
|
50
|
+
graphics.restore(gState);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Implementation
|
|
54
|
+
protected abstract drawInternal(graphics : PdfGraphics) : void;
|
|
55
|
+
/**
|
|
56
|
+
* Returns a rectangle that bounds this element.
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
protected abstract getBoundsInternal() : RectangleF;
|
|
60
|
+
/**
|
|
61
|
+
* Layouts the element.
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
protected layout(param : PdfLayoutParams) : PdfLayoutResult {
|
|
65
|
+
let layouter : ShapeLayouter = new ShapeLayouter(this);
|
|
66
|
+
let result : PdfLayoutResult = layouter.layout(param);
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
}
|