@syncfusion/ej2-pdf-export 23.2.6 → 24.1.41
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 +0 -26
- package/dist/ej2-pdf-export.min.js +2 -2
- package/dist/ej2-pdf-export.umd.min.js +1 -1
- package/dist/ej2-pdf-export.umd.min.js.map +1 -1
- package/dist/es6/ej2-pdf-export.es2015.js.map +1 -1
- package/dist/es6/ej2-pdf-export.es5.js.map +1 -1
- package/dist/global/ej2-pdf-export.min.js +1 -1
- package/dist/global/ej2-pdf-export.min.js.map +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 +65 -0
- package/dist/ts/implementation/document/pdf-document-base.ts +180 -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/document/pdf-viewer-preferences.ts +578 -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 +63 -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 +2429 -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 +571 -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 +663 -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 +306 -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 +7 -7
- package/src/implementation/document/pdf-document-base.js +1 -2
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PdfDocumentTemplate.ts class for EJ2-PDF
|
|
3
|
+
*/
|
|
4
|
+
import { PdfPage } from './../pages/pdf-page';
|
|
5
|
+
import { TemplateType } from './../pages/enum';
|
|
6
|
+
import { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';
|
|
7
|
+
import { PdfPageTemplateElement } from './../pages/pdf-page-template-element';
|
|
8
|
+
// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;
|
|
9
|
+
/**
|
|
10
|
+
* `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
13
|
+
export class PdfDocumentTemplate {
|
|
14
|
+
// Fields
|
|
15
|
+
/**
|
|
16
|
+
* `Left` page template object.
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
private leftTemplate : PdfPageTemplateElement;
|
|
20
|
+
/**
|
|
21
|
+
* `Top` page template object.
|
|
22
|
+
* @private
|
|
23
|
+
*/
|
|
24
|
+
private topTemplate : PdfPageTemplateElement;
|
|
25
|
+
/**
|
|
26
|
+
* `Right` page template object.
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
private rightTemplate : PdfPageTemplateElement;
|
|
30
|
+
/**
|
|
31
|
+
* `Bottom` page template object.
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
private bottomTemplate : PdfPageTemplateElement;
|
|
35
|
+
/**
|
|
36
|
+
* `EvenLeft` page template object.
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
private evenLeft : PdfPageTemplateElement;
|
|
40
|
+
/**
|
|
41
|
+
* `EvenTop` page template object.
|
|
42
|
+
* @private
|
|
43
|
+
*/
|
|
44
|
+
private evenTop : PdfPageTemplateElement;
|
|
45
|
+
/**
|
|
46
|
+
* `EvenRight` page template object.
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
49
|
+
private evenRight : PdfPageTemplateElement;
|
|
50
|
+
/**
|
|
51
|
+
* `EventBottom` page template object.
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
private evenBottom : PdfPageTemplateElement;
|
|
55
|
+
/**
|
|
56
|
+
* `OddLeft` page template object.
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
private oddLeft : PdfPageTemplateElement;
|
|
60
|
+
/**
|
|
61
|
+
* `OddTop` page template object.
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
private oddTop : PdfPageTemplateElement;
|
|
65
|
+
/**
|
|
66
|
+
* `OddRight` page template object.
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
private oddRight : PdfPageTemplateElement;
|
|
70
|
+
/**
|
|
71
|
+
* `OddBottom` page template object.
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
private oddBottom : PdfPageTemplateElement;
|
|
75
|
+
// private m_stamps : PdfStampCollection;
|
|
76
|
+
// Properties
|
|
77
|
+
/**
|
|
78
|
+
* `Left` page template object.
|
|
79
|
+
* @public
|
|
80
|
+
*/
|
|
81
|
+
public get left() : PdfPageTemplateElement {
|
|
82
|
+
return this.leftTemplate;
|
|
83
|
+
}
|
|
84
|
+
public set left(value : PdfPageTemplateElement) {
|
|
85
|
+
this.leftTemplate = this.checkElement(value, TemplateType.Left);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* `Top` page template object.
|
|
89
|
+
* @public
|
|
90
|
+
*/
|
|
91
|
+
public get top() : PdfPageTemplateElement {
|
|
92
|
+
return this.topTemplate;
|
|
93
|
+
}
|
|
94
|
+
public set top(value : PdfPageTemplateElement) {
|
|
95
|
+
this.topTemplate = this.checkElement(value, TemplateType.Top);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* `Right` page template object.
|
|
99
|
+
* @public
|
|
100
|
+
*/
|
|
101
|
+
public get right() : PdfPageTemplateElement {
|
|
102
|
+
return this.rightTemplate;
|
|
103
|
+
}
|
|
104
|
+
public set right(value : PdfPageTemplateElement) {
|
|
105
|
+
this.rightTemplate = this.checkElement(value, TemplateType.Right);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* `Bottom` page template object.
|
|
109
|
+
* @public
|
|
110
|
+
*/
|
|
111
|
+
public get bottom() : PdfPageTemplateElement {
|
|
112
|
+
return this.bottomTemplate;
|
|
113
|
+
}
|
|
114
|
+
public set bottom(value : PdfPageTemplateElement) {
|
|
115
|
+
this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* `EvenLeft` page template object.
|
|
119
|
+
* @public
|
|
120
|
+
*/
|
|
121
|
+
public get EvenLeft() : PdfPageTemplateElement {
|
|
122
|
+
return this.evenLeft;
|
|
123
|
+
}
|
|
124
|
+
public set EvenLeft(value : PdfPageTemplateElement) {
|
|
125
|
+
this.evenLeft = this.checkElement(value, TemplateType.Left);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* `EvenTop` page template object.
|
|
129
|
+
* @public
|
|
130
|
+
*/
|
|
131
|
+
public get EvenTop() : PdfPageTemplateElement {
|
|
132
|
+
return this.evenTop;
|
|
133
|
+
}
|
|
134
|
+
public set EvenTop(value : PdfPageTemplateElement) {
|
|
135
|
+
this.evenTop = this.checkElement(value, TemplateType.Top);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* `EvenRight` page template object.
|
|
139
|
+
* @public
|
|
140
|
+
*/
|
|
141
|
+
public get EvenRight() : PdfPageTemplateElement {
|
|
142
|
+
return this.evenRight;
|
|
143
|
+
}
|
|
144
|
+
public set EvenRight(value : PdfPageTemplateElement) {
|
|
145
|
+
this.evenRight = this.checkElement(value, TemplateType.Right);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* `EvenBottom` page template object.
|
|
149
|
+
* @public
|
|
150
|
+
*/
|
|
151
|
+
public get EvenBottom() : PdfPageTemplateElement {
|
|
152
|
+
return this.evenBottom;
|
|
153
|
+
}
|
|
154
|
+
public set EvenBottom(value : PdfPageTemplateElement) {
|
|
155
|
+
this.evenBottom = this.checkElement(value, TemplateType.Bottom);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* `OddLeft` page template object.
|
|
159
|
+
* @public
|
|
160
|
+
*/
|
|
161
|
+
public get OddLeft() : PdfPageTemplateElement {
|
|
162
|
+
return this.oddLeft;
|
|
163
|
+
}
|
|
164
|
+
public set OddLeft(value : PdfPageTemplateElement) {
|
|
165
|
+
this.oddLeft = this.checkElement(value, TemplateType.Left);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* `OddTop` page template object.
|
|
169
|
+
* @public
|
|
170
|
+
*/
|
|
171
|
+
public get OddTop() : PdfPageTemplateElement {
|
|
172
|
+
return this.oddTop;
|
|
173
|
+
}
|
|
174
|
+
public set OddTop(value : PdfPageTemplateElement) {
|
|
175
|
+
this.oddTop = this.checkElement(value, TemplateType.Top);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* `OddRight` page template object.
|
|
179
|
+
* @public
|
|
180
|
+
*/
|
|
181
|
+
public get OddRight() : PdfPageTemplateElement {
|
|
182
|
+
return this.oddRight;
|
|
183
|
+
}
|
|
184
|
+
public set OddRight(value : PdfPageTemplateElement) {
|
|
185
|
+
this.oddRight = this.checkElement(value, TemplateType.Right);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* `OddBottom` page template object.
|
|
189
|
+
* @public
|
|
190
|
+
*/
|
|
191
|
+
public get OddBottom() : PdfPageTemplateElement {
|
|
192
|
+
return this.oddBottom;
|
|
193
|
+
}
|
|
194
|
+
public set OddBottom(value : PdfPageTemplateElement) {
|
|
195
|
+
this.oddBottom = this.checkElement(value, TemplateType.Bottom);
|
|
196
|
+
}
|
|
197
|
+
// Constructors
|
|
198
|
+
/**
|
|
199
|
+
* Initializes a new instance of the `PdfDocumentTemplate` class.
|
|
200
|
+
* @public
|
|
201
|
+
*/
|
|
202
|
+
public constructor() {
|
|
203
|
+
//
|
|
204
|
+
}
|
|
205
|
+
// Implementation
|
|
206
|
+
/**
|
|
207
|
+
* Returns `left` template.
|
|
208
|
+
* @public
|
|
209
|
+
*/
|
|
210
|
+
public getLeft(page : PdfPage) : PdfPageTemplateElement {
|
|
211
|
+
if (page == null) {
|
|
212
|
+
throw new Error('ArgumentNullException:page');
|
|
213
|
+
}
|
|
214
|
+
let template : PdfPageTemplateElement = null;
|
|
215
|
+
// if (page.Document.Pages != null) {
|
|
216
|
+
let even : boolean = this.isEven(page);
|
|
217
|
+
if (even) {
|
|
218
|
+
template = (this.EvenLeft != null) ? this.EvenLeft : this.left;
|
|
219
|
+
} else {
|
|
220
|
+
template = (this.OddLeft != null) ? this.OddLeft : this.left;
|
|
221
|
+
}
|
|
222
|
+
// }
|
|
223
|
+
return template;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Returns `top` template.
|
|
227
|
+
* @public
|
|
228
|
+
*/
|
|
229
|
+
public getTop(page : PdfPage) : PdfPageTemplateElement {
|
|
230
|
+
if (page == null) {
|
|
231
|
+
throw new Error('ArgumentNullException:page');
|
|
232
|
+
}
|
|
233
|
+
let template : PdfPageTemplateElement = null;
|
|
234
|
+
// if (page.Document.Pages != null) {
|
|
235
|
+
let even : boolean = this.isEven(page);
|
|
236
|
+
if (even) {
|
|
237
|
+
template = (this.EvenTop != null) ? this.EvenTop : this.top;
|
|
238
|
+
} else {
|
|
239
|
+
template = (this.OddTop != null) ? this.OddTop : this.top;
|
|
240
|
+
}
|
|
241
|
+
// }
|
|
242
|
+
return template;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Returns `right` template.
|
|
246
|
+
* @public
|
|
247
|
+
*/
|
|
248
|
+
public getRight(page : PdfPage) : PdfPageTemplateElement {
|
|
249
|
+
if (page == null) {
|
|
250
|
+
throw new Error('ArgumentNullException:page');
|
|
251
|
+
}
|
|
252
|
+
let template : PdfPageTemplateElement = null;
|
|
253
|
+
// if (page.Document.Pages != null) {
|
|
254
|
+
let even : boolean = this.isEven(page);
|
|
255
|
+
if (even) {
|
|
256
|
+
template = (this.EvenRight != null) ? this.EvenRight : this.right;
|
|
257
|
+
} else {
|
|
258
|
+
template = (this.OddRight != null) ? this.OddRight : this.right;
|
|
259
|
+
}
|
|
260
|
+
// }
|
|
261
|
+
return template;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Returns `bottom` template.
|
|
265
|
+
* @public
|
|
266
|
+
*/
|
|
267
|
+
public getBottom(page : PdfPage) : PdfPageTemplateElement {
|
|
268
|
+
if (page == null) {
|
|
269
|
+
throw new Error('ArgumentNullException:page');
|
|
270
|
+
}
|
|
271
|
+
let template : PdfPageTemplateElement = null;
|
|
272
|
+
// if (page.Document.Pages != null) {
|
|
273
|
+
let even : boolean = this.isEven(page);
|
|
274
|
+
if (even) {
|
|
275
|
+
template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;
|
|
276
|
+
} else {
|
|
277
|
+
template = (this.OddBottom != null) ? this.OddBottom : this.bottom;
|
|
278
|
+
}
|
|
279
|
+
// }
|
|
280
|
+
return template;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Checks whether the page `is even`.
|
|
284
|
+
* @private
|
|
285
|
+
*/
|
|
286
|
+
private isEven(page : PdfPage) : boolean {
|
|
287
|
+
let pages : PdfDocumentPageCollection = page.section.document.pages;
|
|
288
|
+
let index : number = 0;
|
|
289
|
+
if (pages.pageCollectionIndex.containsKey(page)) {
|
|
290
|
+
index = pages.pageCollectionIndex.getValue(page) + 1;
|
|
291
|
+
} else {
|
|
292
|
+
index = pages.indexOf(page) + 1;
|
|
293
|
+
}
|
|
294
|
+
let even : boolean = ((index % 2) === 0);
|
|
295
|
+
return even;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Checks a `template element`.
|
|
299
|
+
* @private
|
|
300
|
+
*/
|
|
301
|
+
private checkElement(templateElement : PdfPageTemplateElement, type : TemplateType) : PdfPageTemplateElement {
|
|
302
|
+
if (templateElement != null) {
|
|
303
|
+
if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {
|
|
304
|
+
throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');
|
|
305
|
+
}
|
|
306
|
+
templateElement.type = type;
|
|
307
|
+
}
|
|
308
|
+
return templateElement;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import { StreamWriter } from '@syncfusion/ej2-file-utils';
|
|
2
|
+
import { PdfWriter } from './../input-output/pdf-writer';
|
|
3
|
+
import { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';
|
|
4
|
+
import { PdfDocumentBase } from './pdf-document-base';
|
|
5
|
+
import { PdfCrossTable } from './../input-output/pdf-cross-table';
|
|
6
|
+
import { PdfCatalog } from './pdf-catalog';
|
|
7
|
+
import { PdfPageSettings } from './../pages/pdf-page-settings';
|
|
8
|
+
import { PdfSectionCollection } from './../pages/pdf-section-collection';
|
|
9
|
+
import { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';
|
|
10
|
+
import { PdfCacheCollection } from './../general/pdf-cache-collection';
|
|
11
|
+
import { PdfColorSpace } from './../graphics/enum';
|
|
12
|
+
import { PdfDocumentTemplate } from './pdf-document-template';
|
|
13
|
+
import { PdfFont } from './../graphics/fonts/pdf-font';
|
|
14
|
+
import { PdfFontFamily } from './../graphics/fonts/enum';
|
|
15
|
+
import { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';
|
|
16
|
+
/**
|
|
17
|
+
* Represents a PDF document and can be used to create a new PDF document from the scratch.
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // create a new PDF document
|
|
20
|
+
* let document : PdfDocument = new PdfDocument();
|
|
21
|
+
* // add a new page to the document
|
|
22
|
+
* let page1 : PdfPage = document.pages.add();
|
|
23
|
+
* // set the font
|
|
24
|
+
* let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
|
|
25
|
+
* // create black brush
|
|
26
|
+
* let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));
|
|
27
|
+
* // draw the text
|
|
28
|
+
* page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));
|
|
29
|
+
* // save the document
|
|
30
|
+
* document.save('output.pdf');
|
|
31
|
+
* // destroy the document
|
|
32
|
+
* document.destroy();
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class PdfDocument extends PdfDocumentBase {
|
|
36
|
+
//Fields
|
|
37
|
+
/**
|
|
38
|
+
* `Cache` of the objects.
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
private static cacheCollection : PdfCacheCollection;
|
|
42
|
+
/**
|
|
43
|
+
* Default `margin` value.
|
|
44
|
+
* @default 40.0
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
public readonly defaultMargin : number = 40.0;
|
|
48
|
+
/**
|
|
49
|
+
* Default page `settings`.
|
|
50
|
+
* @private
|
|
51
|
+
*/
|
|
52
|
+
private settings : PdfPageSettings;
|
|
53
|
+
/**
|
|
54
|
+
* Internal variable to store document`s collection of `sections`.
|
|
55
|
+
* @private
|
|
56
|
+
*/
|
|
57
|
+
private sectionCollection : PdfSectionCollection;
|
|
58
|
+
/**
|
|
59
|
+
* Internal variable to store document`s collection of `pages`.
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
private documentPageCollection : PdfDocumentPageCollection;
|
|
63
|
+
/**
|
|
64
|
+
* Internal variable to store instance of `StreamWriter` classes..
|
|
65
|
+
* @default null
|
|
66
|
+
* @private
|
|
67
|
+
*/
|
|
68
|
+
public streamWriter : StreamWriter = null;
|
|
69
|
+
/**
|
|
70
|
+
* Defines the `color space` of the document
|
|
71
|
+
* @private
|
|
72
|
+
*/
|
|
73
|
+
private pdfColorSpace : PdfColorSpace;
|
|
74
|
+
/**
|
|
75
|
+
* Internal variable to store `template` which is applied to each page of the document.
|
|
76
|
+
* @private
|
|
77
|
+
*/
|
|
78
|
+
private pageTemplate : PdfDocumentTemplate;
|
|
79
|
+
/**
|
|
80
|
+
* `Font` used in complex objects to draw strings and text when it is not defined explicitly.
|
|
81
|
+
* @default null
|
|
82
|
+
* @private
|
|
83
|
+
*/
|
|
84
|
+
private static defaultStandardFont : PdfFont = null;
|
|
85
|
+
/**
|
|
86
|
+
* Indicates whether enable cache or not
|
|
87
|
+
* @default true
|
|
88
|
+
* @private
|
|
89
|
+
*/
|
|
90
|
+
private static isCacheEnabled : boolean = true;
|
|
91
|
+
//Constructors
|
|
92
|
+
/**
|
|
93
|
+
* Initializes a new instance of the `PdfDocument` class.
|
|
94
|
+
* @public
|
|
95
|
+
*/
|
|
96
|
+
public constructor()
|
|
97
|
+
/**
|
|
98
|
+
* Initializes a new instance of the `PdfDocument` class.
|
|
99
|
+
* @private
|
|
100
|
+
*/
|
|
101
|
+
public constructor(isMerging : boolean)
|
|
102
|
+
public constructor(isMerging? : boolean) {
|
|
103
|
+
super();
|
|
104
|
+
this.document = this;
|
|
105
|
+
let isMerge : boolean = false;
|
|
106
|
+
if (typeof isMerging === 'undefined') {
|
|
107
|
+
PdfDocument.cacheCollection = new PdfCacheCollection();
|
|
108
|
+
isMerge = false;
|
|
109
|
+
} else {
|
|
110
|
+
isMerge = isMerging;
|
|
111
|
+
}
|
|
112
|
+
let objects : PdfMainObjectCollection = new PdfMainObjectCollection();
|
|
113
|
+
this.setMainObjectCollection(objects);
|
|
114
|
+
let crossTable : PdfCrossTable = new PdfCrossTable();
|
|
115
|
+
crossTable.isMerging = isMerge;
|
|
116
|
+
crossTable.document = this;
|
|
117
|
+
this.setCrossTable(crossTable);
|
|
118
|
+
let catalog : PdfCatalog = new PdfCatalog();
|
|
119
|
+
this.setCatalog(catalog);
|
|
120
|
+
objects.add(catalog);
|
|
121
|
+
catalog.position = -1;
|
|
122
|
+
this.sectionCollection = new PdfSectionCollection(this);
|
|
123
|
+
this.documentPageCollection = new PdfDocumentPageCollection(this);
|
|
124
|
+
catalog.pages = this.sectionCollection;
|
|
125
|
+
}
|
|
126
|
+
//Properties
|
|
127
|
+
/**
|
|
128
|
+
* Gets the `default font`. It is used for complex objects when font is not explicitly defined.
|
|
129
|
+
* @private
|
|
130
|
+
*/
|
|
131
|
+
public static get defaultFont() : PdfFont {
|
|
132
|
+
if (this.defaultStandardFont == null) {
|
|
133
|
+
this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);
|
|
134
|
+
}
|
|
135
|
+
return this.defaultStandardFont;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Gets the collection of the `sections` in the document.
|
|
139
|
+
* @private
|
|
140
|
+
*/
|
|
141
|
+
public get sections() : PdfSectionCollection {
|
|
142
|
+
return this.sectionCollection;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Gets the document's page setting.
|
|
146
|
+
* @public
|
|
147
|
+
*/
|
|
148
|
+
public get pageSettings() : PdfPageSettings {
|
|
149
|
+
if (this.settings == null) {
|
|
150
|
+
this.settings = new PdfPageSettings(this.defaultMargin);
|
|
151
|
+
}
|
|
152
|
+
return this.settings;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Sets the document's page setting.
|
|
156
|
+
* ```typescript
|
|
157
|
+
* // create a new PDF document
|
|
158
|
+
* let document : PdfDocument = new PdfDocument();
|
|
159
|
+
*
|
|
160
|
+
* // sets the right margin of the page
|
|
161
|
+
* document.pageSettings.margins.right = 0;
|
|
162
|
+
* // set the page size.
|
|
163
|
+
* document.pageSettings.size = new SizeF(500, 500);
|
|
164
|
+
* // change the page orientation to landscape
|
|
165
|
+
* document.pageSettings.orientation = PdfPageOrientation.Landscape;
|
|
166
|
+
* // apply 90 degree rotation on the page
|
|
167
|
+
* document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;
|
|
168
|
+
*
|
|
169
|
+
* // add a pages to the document
|
|
170
|
+
* let page1 : PdfPage = document.pages.add();
|
|
171
|
+
* // set font
|
|
172
|
+
* let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
|
|
173
|
+
* // set brush
|
|
174
|
+
* let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));
|
|
175
|
+
* // set the specified Point
|
|
176
|
+
* let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);
|
|
177
|
+
* // draw the text
|
|
178
|
+
* page1.graphics.drawString('Hello World', font, blackBrush, point);
|
|
179
|
+
* // save the document
|
|
180
|
+
* document.save('output.pdf');
|
|
181
|
+
* // destroy the document
|
|
182
|
+
* document.destroy();
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
public set pageSettings(value : PdfPageSettings) {
|
|
186
|
+
this.settings = value;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Represents the collection of pages in the PDF document.
|
|
190
|
+
* ```typescript
|
|
191
|
+
* // create a new PDF document
|
|
192
|
+
* let document : PdfDocument = new PdfDocument();
|
|
193
|
+
* //
|
|
194
|
+
* // get the collection of pages in the document
|
|
195
|
+
* let pageCollection : PdfDocumentPageCollection = document.pages;
|
|
196
|
+
* //
|
|
197
|
+
* // add pages
|
|
198
|
+
* let page1 : PdfPage = pageCollection.add();
|
|
199
|
+
* // save the document
|
|
200
|
+
* document.save('output.pdf');
|
|
201
|
+
* // destroy the document
|
|
202
|
+
* document.destroy();
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
public get pages() : PdfDocumentPageCollection {
|
|
206
|
+
return this.documentPageCollection;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Gets collection of the `cached objects`.
|
|
210
|
+
* @private
|
|
211
|
+
*/
|
|
212
|
+
public static get cache() : PdfCacheCollection {
|
|
213
|
+
if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {
|
|
214
|
+
return new PdfCacheCollection();
|
|
215
|
+
}
|
|
216
|
+
return PdfDocument.cacheCollection;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Sets collection of the `cached objects`.
|
|
220
|
+
* @private
|
|
221
|
+
*/
|
|
222
|
+
public static set cache(value : PdfCacheCollection) {
|
|
223
|
+
this.cacheCollection = value;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Gets the value of enable cache.
|
|
227
|
+
* @private
|
|
228
|
+
*/
|
|
229
|
+
public static get enableCache() : boolean {
|
|
230
|
+
return this.isCacheEnabled;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Sets thie value of enable cache.
|
|
234
|
+
* @private
|
|
235
|
+
*/
|
|
236
|
+
public static set enableCache(value : boolean) {
|
|
237
|
+
this.isCacheEnabled = value;
|
|
238
|
+
}
|
|
239
|
+
/* tslint:disable */
|
|
240
|
+
/**
|
|
241
|
+
* Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.
|
|
242
|
+
* @private
|
|
243
|
+
*/
|
|
244
|
+
public get colorSpace() : PdfColorSpace {
|
|
245
|
+
if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)
|
|
246
|
+
|| (this.pdfColorSpace === PdfColorSpace.GrayScale))) {
|
|
247
|
+
return this.pdfColorSpace;
|
|
248
|
+
} else {
|
|
249
|
+
return PdfColorSpace.Rgb;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
public set colorSpace(value : PdfColorSpace) {
|
|
253
|
+
if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||
|
|
254
|
+
(value === PdfColorSpace.GrayScale))) {
|
|
255
|
+
this.pdfColorSpace = value;
|
|
256
|
+
} else {
|
|
257
|
+
this.pdfColorSpace = PdfColorSpace.Rgb;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/* tslint:enable */
|
|
261
|
+
/**
|
|
262
|
+
* Gets or sets a `template` to all pages in the document.
|
|
263
|
+
* @private
|
|
264
|
+
*/
|
|
265
|
+
public get template() : PdfDocumentTemplate {
|
|
266
|
+
if (this.pageTemplate == null) {
|
|
267
|
+
this.pageTemplate = new PdfDocumentTemplate();
|
|
268
|
+
}
|
|
269
|
+
return this.pageTemplate;
|
|
270
|
+
}
|
|
271
|
+
public set template(value : PdfDocumentTemplate) {
|
|
272
|
+
this.pageTemplate = value;
|
|
273
|
+
}
|
|
274
|
+
// Public methods
|
|
275
|
+
/**
|
|
276
|
+
* Saves the document to the specified output stream and return the stream as Blob.
|
|
277
|
+
* @private
|
|
278
|
+
*/
|
|
279
|
+
public docSave(stream : StreamWriter, isBase : boolean) : Blob
|
|
280
|
+
/**
|
|
281
|
+
* Saves the document to the specified output stream.
|
|
282
|
+
* @private
|
|
283
|
+
*/
|
|
284
|
+
public docSave(stream : StreamWriter, filename : string, isBase : boolean) : void
|
|
285
|
+
public docSave(stream : StreamWriter, arg2 : string | boolean, arg3 ?: boolean) : void | Blob {
|
|
286
|
+
this.checkPagesPresence();
|
|
287
|
+
if (stream === null) {
|
|
288
|
+
throw new Error('ArgumentNullException : stream');
|
|
289
|
+
}
|
|
290
|
+
this.streamWriter = stream;
|
|
291
|
+
let writer : PdfWriter = new PdfWriter(stream);
|
|
292
|
+
writer.document = this;
|
|
293
|
+
if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {
|
|
294
|
+
return this.crossTable.save(writer);
|
|
295
|
+
} else {
|
|
296
|
+
this.crossTable.save(writer, (arg2 as string));
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Checks the pages `presence`.
|
|
301
|
+
* @private
|
|
302
|
+
*/
|
|
303
|
+
private checkPagesPresence() : void {
|
|
304
|
+
if (this.pages.count === 0) {
|
|
305
|
+
this.pages.add();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* disposes the current instance of `PdfDocument` class.
|
|
310
|
+
* ```typescript
|
|
311
|
+
* // create a new PDF document
|
|
312
|
+
* let document : PdfDocument = new PdfDocument();
|
|
313
|
+
* // add a new page to the document
|
|
314
|
+
* let page1 : PdfPage = document.pages.add();
|
|
315
|
+
* // set the font
|
|
316
|
+
* let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
|
|
317
|
+
* // create black brush
|
|
318
|
+
* let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));
|
|
319
|
+
* // draw the text
|
|
320
|
+
* page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));
|
|
321
|
+
* // save the document
|
|
322
|
+
* document.save('output.pdf');
|
|
323
|
+
* // destroy the document
|
|
324
|
+
* document.destroy();
|
|
325
|
+
* ```
|
|
326
|
+
*/
|
|
327
|
+
public destroy() : void {
|
|
328
|
+
this.catalog = undefined;
|
|
329
|
+
this.colorSpace = undefined;
|
|
330
|
+
this.currentSavingObj = undefined;
|
|
331
|
+
this.documentPageCollection = undefined;
|
|
332
|
+
this.isStreamCopied = undefined;
|
|
333
|
+
this.pageSettings = undefined;
|
|
334
|
+
this.pageTemplate = undefined;
|
|
335
|
+
this.pdfColorSpace = undefined;
|
|
336
|
+
this.sectionCollection = undefined;
|
|
337
|
+
PdfDocument.cache.destroy();
|
|
338
|
+
this.crossTable.pdfObjects.destroy();
|
|
339
|
+
PdfDocument.cache = undefined;
|
|
340
|
+
this.streamWriter.destroy();
|
|
341
|
+
}
|
|
342
|
+
}
|