@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.
Files changed (155) hide show
  1. package/.eslintrc.json +1 -0
  2. package/dist/ej2-pdf-export.min.js +1 -1
  3. package/dist/ej2-pdf-export.umd.min.js +1 -1
  4. package/dist/global/ej2-pdf-export.min.js +1 -1
  5. package/dist/global/index.d.ts +1 -1
  6. package/dist/ts/implementation/actions/action.ts +76 -0
  7. package/dist/ts/implementation/actions/uri-action.ts +52 -0
  8. package/dist/ts/implementation/annotations/action-link-annotation.ts +43 -0
  9. package/dist/ts/implementation/annotations/annotation-collection.ts +159 -0
  10. package/dist/ts/implementation/annotations/annotation.ts +241 -0
  11. package/dist/ts/implementation/annotations/document-link-annotation.ts +118 -0
  12. package/dist/ts/implementation/annotations/link-annotation.ts +32 -0
  13. package/dist/ts/implementation/annotations/pdf-text-web-link.ts +265 -0
  14. package/dist/ts/implementation/annotations/uri-annotation.ts +86 -0
  15. package/dist/ts/implementation/collections/dictionary.ts +150 -0
  16. package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +125 -0
  17. package/dist/ts/implementation/collections/utils.ts +38 -0
  18. package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +39 -0
  19. package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +108 -0
  20. package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +127 -0
  21. package/dist/ts/implementation/document/automatic-fields/composite-field.ts +76 -0
  22. package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +37 -0
  23. package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +75 -0
  24. package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +157 -0
  25. package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +82 -0
  26. package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +60 -0
  27. package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +48 -0
  28. package/dist/ts/implementation/document/pdf-catalog.ts +52 -0
  29. package/dist/ts/implementation/document/pdf-document-base.ts +166 -0
  30. package/dist/ts/implementation/document/pdf-document-template.ts +310 -0
  31. package/dist/ts/implementation/document/pdf-document.ts +342 -0
  32. package/dist/ts/implementation/drawing/pdf-drawing.ts +218 -0
  33. package/dist/ts/implementation/general/enum.ts +21 -0
  34. package/dist/ts/implementation/general/functions/pdf-function.ts +66 -0
  35. package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +62 -0
  36. package/dist/ts/implementation/general/pdf-cache-collection.ts +97 -0
  37. package/dist/ts/implementation/general/pdf-collection.ts +41 -0
  38. package/dist/ts/implementation/general/pdf-destination.ts +170 -0
  39. package/dist/ts/implementation/graphics/brushes/enum.ts +237 -0
  40. package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +294 -0
  41. package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +68 -0
  42. package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +2438 -0
  43. package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +295 -0
  44. package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +311 -0
  45. package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +406 -0
  46. package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +290 -0
  47. package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +107 -0
  48. package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +304 -0
  49. package/dist/ts/implementation/graphics/constants.ts +31 -0
  50. package/dist/ts/implementation/graphics/enum.ts +413 -0
  51. package/dist/ts/implementation/graphics/figures/arc.ts +133 -0
  52. package/dist/ts/implementation/graphics/figures/base/draw-element.ts +59 -0
  53. package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +260 -0
  54. package/dist/ts/implementation/graphics/figures/base/fill-element.ts +72 -0
  55. package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +34 -0
  56. package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +69 -0
  57. package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +276 -0
  58. package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +205 -0
  59. package/dist/ts/implementation/graphics/figures/ellipse-part.ts +76 -0
  60. package/dist/ts/implementation/graphics/figures/enum.ts +80 -0
  61. package/dist/ts/implementation/graphics/figures/layout-element.ts +132 -0
  62. package/dist/ts/implementation/graphics/figures/path.ts +646 -0
  63. package/dist/ts/implementation/graphics/figures/pdf-template.ts +205 -0
  64. package/dist/ts/implementation/graphics/figures/rectangle-area.ts +108 -0
  65. package/dist/ts/implementation/graphics/figures/text-element.ts +445 -0
  66. package/dist/ts/implementation/graphics/fonts/enum.ts +385 -0
  67. package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +248 -0
  68. package/dist/ts/implementation/graphics/fonts/pdf-font.ts +316 -0
  69. package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +606 -0
  70. package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +243 -0
  71. package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +474 -0
  72. package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +165 -0
  73. package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +958 -0
  74. package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +374 -0
  75. package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +255 -0
  76. package/dist/ts/implementation/graphics/fonts/string-layouter.ts +617 -0
  77. package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +275 -0
  78. package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +206 -0
  79. package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +18 -0
  80. package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +18 -0
  81. package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +14 -0
  82. package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +26 -0
  83. package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +35 -0
  84. package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +94 -0
  85. package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +56 -0
  86. package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +10 -0
  87. package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +14 -0
  88. package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +106 -0
  89. package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +58 -0
  90. package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +33 -0
  91. package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +22 -0
  92. package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +42 -0
  93. package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +1254 -0
  94. package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +26 -0
  95. package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +26 -0
  96. package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +577 -0
  97. package/dist/ts/implementation/graphics/images/byte-array.ts +137 -0
  98. package/dist/ts/implementation/graphics/images/image-decoder.ts +439 -0
  99. package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +110 -0
  100. package/dist/ts/implementation/graphics/images/pdf-image.ts +132 -0
  101. package/dist/ts/implementation/graphics/pdf-color.ts +478 -0
  102. package/dist/ts/implementation/graphics/pdf-graphics.ts +2424 -0
  103. package/dist/ts/implementation/graphics/pdf-margins.ts +124 -0
  104. package/dist/ts/implementation/graphics/pdf-pen.ts +370 -0
  105. package/dist/ts/implementation/graphics/pdf-resources.ts +300 -0
  106. package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +246 -0
  107. package/dist/ts/implementation/graphics/pdf-transparency.ts +93 -0
  108. package/dist/ts/implementation/graphics/unit-convertor.ts +96 -0
  109. package/dist/ts/implementation/input-output/big-endian-writer.ts +121 -0
  110. package/dist/ts/implementation/input-output/cross-table.ts +21 -0
  111. package/dist/ts/implementation/input-output/enum.ts +16 -0
  112. package/dist/ts/implementation/input-output/pdf-cross-table.ts +524 -0
  113. package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +515 -0
  114. package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +194 -0
  115. package/dist/ts/implementation/input-output/pdf-operators.ts +363 -0
  116. package/dist/ts/implementation/input-output/pdf-stream-writer.ts +681 -0
  117. package/dist/ts/implementation/input-output/pdf-writer.ts +88 -0
  118. package/dist/ts/implementation/pages/enum.ts +201 -0
  119. package/dist/ts/implementation/pages/page-added-event-arguments.ts +39 -0
  120. package/dist/ts/implementation/pages/pdf-document-page-collection.ts +180 -0
  121. package/dist/ts/implementation/pages/pdf-page-base.ts +181 -0
  122. package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +348 -0
  123. package/dist/ts/implementation/pages/pdf-page-layer.ts +271 -0
  124. package/dist/ts/implementation/pages/pdf-page-settings.ts +192 -0
  125. package/dist/ts/implementation/pages/pdf-page-size.ts +162 -0
  126. package/dist/ts/implementation/pages/pdf-page-template-element.ts +659 -0
  127. package/dist/ts/implementation/pages/pdf-page.ts +235 -0
  128. package/dist/ts/implementation/pages/pdf-section-collection.ts +187 -0
  129. package/dist/ts/implementation/pages/pdf-section-page-collection.ts +61 -0
  130. package/dist/ts/implementation/pages/pdf-section-templates.ts +96 -0
  131. package/dist/ts/implementation/pages/pdf-section.ts +644 -0
  132. package/dist/ts/implementation/primitives/pdf-array.ts +386 -0
  133. package/dist/ts/implementation/primitives/pdf-boolean.ts +119 -0
  134. package/dist/ts/implementation/primitives/pdf-dictionary.ts +513 -0
  135. package/dist/ts/implementation/primitives/pdf-name.ts +218 -0
  136. package/dist/ts/implementation/primitives/pdf-number.ts +165 -0
  137. package/dist/ts/implementation/primitives/pdf-reference.ts +430 -0
  138. package/dist/ts/implementation/primitives/pdf-stream.ts +336 -0
  139. package/dist/ts/implementation/primitives/pdf-string.ts +397 -0
  140. package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +2027 -0
  141. package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +1193 -0
  142. package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +206 -0
  143. package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +470 -0
  144. package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +853 -0
  145. package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +240 -0
  146. package/dist/ts/implementation/structured-elements/grid/styles/style.ts +424 -0
  147. package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +16 -0
  148. package/dist/ts/interfaces/i-pdf-cache.ts +23 -0
  149. package/dist/ts/interfaces/i-pdf-changable.ts +17 -0
  150. package/dist/ts/interfaces/i-pdf-clonable.ts +12 -0
  151. package/dist/ts/interfaces/i-pdf-primitives.ts +45 -0
  152. package/dist/ts/interfaces/i-pdf-true-type-font.ts +48 -0
  153. package/dist/ts/interfaces/i-pdf-wrapper.ts +13 -0
  154. package/dist/ts/interfaces/i-pdf-writer.ts +29 -0
  155. package/package.json +6 -6
@@ -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
+ }