@syncfusion/ej2-pdf-export 20.1.55 → 20.2.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/ej2-pdf-export.umd.min.js +1 -1
  2. package/dist/global/ej2-pdf-export.min.js +1 -1
  3. package/dist/global/index.d.ts +1 -1
  4. package/dist/ts/implementation/actions/action.ts +76 -0
  5. package/dist/ts/implementation/actions/uri-action.ts +52 -0
  6. package/dist/ts/implementation/annotations/action-link-annotation.ts +43 -0
  7. package/dist/ts/implementation/annotations/annotation-collection.ts +159 -0
  8. package/dist/ts/implementation/annotations/annotation.ts +241 -0
  9. package/dist/ts/implementation/annotations/document-link-annotation.ts +118 -0
  10. package/dist/ts/implementation/annotations/link-annotation.ts +32 -0
  11. package/dist/ts/implementation/annotations/pdf-text-web-link.ts +265 -0
  12. package/dist/ts/implementation/annotations/uri-annotation.ts +86 -0
  13. package/dist/ts/implementation/collections/dictionary.ts +150 -0
  14. package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +125 -0
  15. package/dist/ts/implementation/collections/utils.ts +38 -0
  16. package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +39 -0
  17. package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +108 -0
  18. package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +127 -0
  19. package/dist/ts/implementation/document/automatic-fields/composite-field.ts +76 -0
  20. package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +37 -0
  21. package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +75 -0
  22. package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +157 -0
  23. package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +82 -0
  24. package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +60 -0
  25. package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +48 -0
  26. package/dist/ts/implementation/document/pdf-catalog.ts +52 -0
  27. package/dist/ts/implementation/document/pdf-document-base.ts +166 -0
  28. package/dist/ts/implementation/document/pdf-document-template.ts +310 -0
  29. package/dist/ts/implementation/document/pdf-document.ts +342 -0
  30. package/dist/ts/implementation/drawing/pdf-drawing.ts +218 -0
  31. package/dist/ts/implementation/general/enum.ts +21 -0
  32. package/dist/ts/implementation/general/functions/pdf-function.ts +66 -0
  33. package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +62 -0
  34. package/dist/ts/implementation/general/pdf-cache-collection.ts +97 -0
  35. package/dist/ts/implementation/general/pdf-collection.ts +41 -0
  36. package/dist/ts/implementation/general/pdf-destination.ts +170 -0
  37. package/dist/ts/implementation/graphics/brushes/enum.ts +237 -0
  38. package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +294 -0
  39. package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +68 -0
  40. package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +2438 -0
  41. package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +295 -0
  42. package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +311 -0
  43. package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +406 -0
  44. package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +290 -0
  45. package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +107 -0
  46. package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +304 -0
  47. package/dist/ts/implementation/graphics/constants.ts +31 -0
  48. package/dist/ts/implementation/graphics/enum.ts +413 -0
  49. package/dist/ts/implementation/graphics/figures/arc.ts +133 -0
  50. package/dist/ts/implementation/graphics/figures/base/draw-element.ts +59 -0
  51. package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +260 -0
  52. package/dist/ts/implementation/graphics/figures/base/fill-element.ts +72 -0
  53. package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +34 -0
  54. package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +69 -0
  55. package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +276 -0
  56. package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +205 -0
  57. package/dist/ts/implementation/graphics/figures/ellipse-part.ts +76 -0
  58. package/dist/ts/implementation/graphics/figures/enum.ts +80 -0
  59. package/dist/ts/implementation/graphics/figures/layout-element.ts +132 -0
  60. package/dist/ts/implementation/graphics/figures/path.ts +646 -0
  61. package/dist/ts/implementation/graphics/figures/pdf-template.ts +205 -0
  62. package/dist/ts/implementation/graphics/figures/rectangle-area.ts +108 -0
  63. package/dist/ts/implementation/graphics/figures/text-element.ts +445 -0
  64. package/dist/ts/implementation/graphics/fonts/enum.ts +385 -0
  65. package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +248 -0
  66. package/dist/ts/implementation/graphics/fonts/pdf-font.ts +316 -0
  67. package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +606 -0
  68. package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +243 -0
  69. package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +474 -0
  70. package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +165 -0
  71. package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +958 -0
  72. package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +374 -0
  73. package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +255 -0
  74. package/dist/ts/implementation/graphics/fonts/string-layouter.ts +617 -0
  75. package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +275 -0
  76. package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +206 -0
  77. package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +18 -0
  78. package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +18 -0
  79. package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +14 -0
  80. package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +26 -0
  81. package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +35 -0
  82. package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +94 -0
  83. package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +56 -0
  84. package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +10 -0
  85. package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +14 -0
  86. package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +106 -0
  87. package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +58 -0
  88. package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +33 -0
  89. package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +22 -0
  90. package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +42 -0
  91. package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +1254 -0
  92. package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +26 -0
  93. package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +26 -0
  94. package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +577 -0
  95. package/dist/ts/implementation/graphics/images/byte-array.ts +137 -0
  96. package/dist/ts/implementation/graphics/images/image-decoder.ts +437 -0
  97. package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +110 -0
  98. package/dist/ts/implementation/graphics/images/pdf-image.ts +132 -0
  99. package/dist/ts/implementation/graphics/pdf-color.ts +478 -0
  100. package/dist/ts/implementation/graphics/pdf-graphics.ts +2424 -0
  101. package/dist/ts/implementation/graphics/pdf-margins.ts +124 -0
  102. package/dist/ts/implementation/graphics/pdf-pen.ts +370 -0
  103. package/dist/ts/implementation/graphics/pdf-resources.ts +300 -0
  104. package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +246 -0
  105. package/dist/ts/implementation/graphics/pdf-transparency.ts +93 -0
  106. package/dist/ts/implementation/graphics/unit-convertor.ts +96 -0
  107. package/dist/ts/implementation/input-output/big-endian-writer.ts +121 -0
  108. package/dist/ts/implementation/input-output/cross-table.ts +21 -0
  109. package/dist/ts/implementation/input-output/enum.ts +16 -0
  110. package/dist/ts/implementation/input-output/pdf-cross-table.ts +524 -0
  111. package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +515 -0
  112. package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +194 -0
  113. package/dist/ts/implementation/input-output/pdf-operators.ts +363 -0
  114. package/dist/ts/implementation/input-output/pdf-stream-writer.ts +681 -0
  115. package/dist/ts/implementation/input-output/pdf-writer.ts +88 -0
  116. package/dist/ts/implementation/pages/enum.ts +201 -0
  117. package/dist/ts/implementation/pages/page-added-event-arguments.ts +39 -0
  118. package/dist/ts/implementation/pages/pdf-document-page-collection.ts +180 -0
  119. package/dist/ts/implementation/pages/pdf-page-base.ts +181 -0
  120. package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +348 -0
  121. package/dist/ts/implementation/pages/pdf-page-layer.ts +271 -0
  122. package/dist/ts/implementation/pages/pdf-page-settings.ts +192 -0
  123. package/dist/ts/implementation/pages/pdf-page-size.ts +162 -0
  124. package/dist/ts/implementation/pages/pdf-page-template-element.ts +659 -0
  125. package/dist/ts/implementation/pages/pdf-page.ts +235 -0
  126. package/dist/ts/implementation/pages/pdf-section-collection.ts +187 -0
  127. package/dist/ts/implementation/pages/pdf-section-page-collection.ts +61 -0
  128. package/dist/ts/implementation/pages/pdf-section-templates.ts +96 -0
  129. package/dist/ts/implementation/pages/pdf-section.ts +644 -0
  130. package/dist/ts/implementation/primitives/pdf-array.ts +386 -0
  131. package/dist/ts/implementation/primitives/pdf-boolean.ts +119 -0
  132. package/dist/ts/implementation/primitives/pdf-dictionary.ts +513 -0
  133. package/dist/ts/implementation/primitives/pdf-name.ts +218 -0
  134. package/dist/ts/implementation/primitives/pdf-number.ts +165 -0
  135. package/dist/ts/implementation/primitives/pdf-reference.ts +430 -0
  136. package/dist/ts/implementation/primitives/pdf-stream.ts +336 -0
  137. package/dist/ts/implementation/primitives/pdf-string.ts +397 -0
  138. package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +2027 -0
  139. package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +1189 -0
  140. package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +206 -0
  141. package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +470 -0
  142. package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +853 -0
  143. package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +240 -0
  144. package/dist/ts/implementation/structured-elements/grid/styles/style.ts +424 -0
  145. package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +16 -0
  146. package/dist/ts/interfaces/i-pdf-cache.ts +23 -0
  147. package/dist/ts/interfaces/i-pdf-changable.ts +17 -0
  148. package/dist/ts/interfaces/i-pdf-clonable.ts +12 -0
  149. package/dist/ts/interfaces/i-pdf-primitives.ts +45 -0
  150. package/dist/ts/interfaces/i-pdf-true-type-font.ts +48 -0
  151. package/dist/ts/interfaces/i-pdf-wrapper.ts +13 -0
  152. package/dist/ts/interfaces/i-pdf-writer.ts +29 -0
  153. package/package.json +6 -6
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Dictionary class
3
+ * @private
4
+ * @hidden
5
+ */
6
+ export class TemporaryDictionary<K, V> {
7
+ /**
8
+ * @hidden
9
+ * @private
10
+ */
11
+ private mKeys: K[] = [];
12
+ /**
13
+ * @hidden
14
+ * @private
15
+ */
16
+ private mValues: V[] = [];
17
+ /**
18
+ * @hidden
19
+ * @private
20
+ */
21
+ public size(): number {
22
+ return this.mKeys.length;
23
+ }
24
+ /**
25
+ * @hidden
26
+ * @private
27
+ */
28
+ public add(key: K, value: V): number {
29
+ if (key === undefined || key === null || value === undefined || value === null) {
30
+ throw new ReferenceError('Provided key or value is not valid.');
31
+ }
32
+ let index: number = this.mKeys.indexOf(key);
33
+ if (index < 0) {
34
+ this.mKeys.push(key);
35
+ this.mValues.push(value);
36
+ return 1;
37
+ } else {
38
+ throw new RangeError('An item with the same key has already been added.');
39
+ }
40
+ }
41
+ /**
42
+ * @hidden
43
+ * @private
44
+ */
45
+ public keys(): K[] {
46
+ return this.mKeys;
47
+ }
48
+ /**
49
+ * @hidden
50
+ * @private
51
+ */
52
+ public values(): V[] {
53
+ return this.mValues;
54
+ }
55
+ /**
56
+ * @hidden
57
+ * @private
58
+ */
59
+ public getValue(key: K): V {
60
+ if (key === undefined || key === null) {
61
+ throw new ReferenceError('Provided key is not valid.');
62
+ }
63
+ let index: number = this.mKeys.indexOf(key);
64
+ if (index < 0) {
65
+ throw new RangeError('No item with the specified key has been added.');
66
+ } else {
67
+ return this.mValues[index];
68
+ }
69
+ }
70
+ /**
71
+ * @hidden
72
+ * @private
73
+ */
74
+ public setValue(key: K, value: V): void {
75
+ if (key === undefined || key === null) {
76
+ throw new ReferenceError('Provided key is not valid.');
77
+ }
78
+ let index: number = this.mKeys.indexOf(key);
79
+ if (index < 0) {
80
+ this.mKeys.push(key);
81
+ this.mValues.push(value);
82
+ } else {
83
+ this.mValues[index] = value;
84
+ }
85
+ }
86
+ /**
87
+ * @hidden
88
+ * @private
89
+ */
90
+ public remove(key: K): boolean {
91
+ if (key === undefined || key === null) {
92
+ throw new ReferenceError('Provided key is not valid.');
93
+ }
94
+ let index: number = this.mKeys.indexOf(key);
95
+ if (index < 0) {
96
+ throw new RangeError('No item with the specified key has been added.');
97
+ } else {
98
+ this.mKeys.splice(index, 1);
99
+ this.mValues.splice(index, 1);
100
+ return true;
101
+ }
102
+ }
103
+ /**
104
+ * @hidden
105
+ * @private
106
+ */
107
+ public containsKey(key: K): boolean {
108
+ if (key === undefined || key === null) {
109
+ throw new ReferenceError('Provided key is not valid.');
110
+ }
111
+ let index: number = this.mKeys.indexOf(key);
112
+ if (index < 0) {
113
+ return false;
114
+ }
115
+ return true;
116
+ }
117
+ /**
118
+ * @hidden
119
+ * @private
120
+ */
121
+ public clear(): void {
122
+ this.mKeys = [];
123
+ this.mValues = [];
124
+ }
125
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Utils.ts class for EJ2-PDF
3
+ * @private
4
+ * @hidden
5
+ */
6
+ export interface ICompareFunction<T> {
7
+ (a: T, b: T): number;
8
+ }
9
+ /**
10
+ * @private
11
+ * @hidden
12
+ */
13
+ export interface IEqualsFunction<T> {
14
+ (a: T, b: T): boolean;
15
+ }
16
+ /**
17
+ * @private
18
+ * @hidden
19
+ */
20
+ export interface ILoopFunction<T> {
21
+ (a: T): boolean | void;
22
+ }
23
+ /**
24
+ * @private
25
+ * @hidden
26
+ */
27
+ export function defaultToString(item: string|number|string[]|number[]|Object|Object[]|boolean): string {
28
+ // if (item === null) {
29
+ // return 'COLLECTION_NULL';
30
+ // } else if (typeof item === 'undefined') {
31
+ // return 'COLLECTION_UNDEFINED';
32
+ // } else if (Object.prototype.toString.call(item) === '[object String]') {
33
+ if (Object.prototype.toString.call(item) === '[object String]') {
34
+ return '$s' + item;
35
+ } else {
36
+ return '$o' + item.toString();
37
+ }
38
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * PdfAutomaticFieldInfoCollection.ts class for EJ2-PDF
3
+ * @private
4
+ */
5
+ import { PdfAutomaticFieldInfo } from './automatic-field-info';
6
+ /**
7
+ * Represent a `collection of automatic fields information`.
8
+ * @private
9
+ */
10
+ export class PdfAutomaticFieldInfoCollection {
11
+ /**
12
+ * Internal variable to store instance of `pageNumberFields` class.
13
+ * @private
14
+ */
15
+ private automaticFieldsInformation : PdfAutomaticFieldInfo[] = [];
16
+ /**
17
+ * Gets the `page number fields collection`.
18
+ * @private
19
+ */
20
+ public get automaticFields() : PdfAutomaticFieldInfo[] {
21
+ return this.automaticFieldsInformation;
22
+ }
23
+ /**
24
+ * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.
25
+ * @private
26
+ */
27
+ public constructor() {
28
+ //
29
+ }
30
+ // Public methods
31
+ /// Adds the specified field info.
32
+ /**
33
+ * Add page number field into collection.
34
+ * @private
35
+ */
36
+ public add(fieldInfo : PdfAutomaticFieldInfo) : number {
37
+ return this.automaticFields.push(fieldInfo);
38
+ }
39
+ }
@@ -0,0 +1,108 @@
1
+ /**
2
+ * PdfAutomaticFieldInfo.ts class for EJ2-PDF
3
+ * @private
4
+ */
5
+ import { PointF } from './../../drawing/pdf-drawing';
6
+ import { PdfAutomaticField } from './automatic-field';
7
+ /**
8
+ * Represents information about the automatic field.
9
+ * @private
10
+ */
11
+ export class PdfAutomaticFieldInfo {
12
+ // Fields
13
+ /**
14
+ * Internal variable to store location of the field.
15
+ * @private
16
+ */
17
+ private pageNumberFieldLocation : PointF = new PointF();
18
+ /**
19
+ * Internal variable to store field.
20
+ * @private
21
+ */
22
+ private pageNumberField : PdfAutomaticField = null;
23
+ /**
24
+ * Internal variable to store x scaling factor.
25
+ * @private
26
+ */
27
+ private scaleX : number = 1;
28
+ /**
29
+ * Internal variable to store y scaling factor.
30
+ * @private
31
+ */
32
+ private scaleY : number = 1;
33
+ // Constructor
34
+ /**
35
+ * Initializes a new instance of the 'PdfAutomaticFieldInfo' class.
36
+ * @private
37
+ */
38
+ public constructor(field : PdfAutomaticFieldInfo)
39
+ /**
40
+ * Initializes a new instance of the 'PdfAutomaticFieldInfo' class.
41
+ * @private
42
+ */
43
+ public constructor(field : PdfAutomaticField, location : PointF)
44
+ /**
45
+ * Initializes a new instance of the 'PdfAutomaticFieldInfo' class.
46
+ * @private
47
+ */
48
+ /* tslint:disable */
49
+ public constructor(field : PdfAutomaticField, location : PointF, scaleX : number, scaleY : number)
50
+ public constructor(field : PdfAutomaticField | PdfAutomaticFieldInfo, location ?: PointF, scaleX ?: number, scaleY ?: number) {
51
+ if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {
52
+ this.pageNumberField = field.field;
53
+ this.pageNumberFieldLocation = field.location;
54
+ this.scaleX = field.scalingX;
55
+ this.scaleY = field.scalingY;
56
+ } else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {
57
+ this.pageNumberField = field;
58
+ this.pageNumberFieldLocation = location;
59
+ } else {
60
+ this.pageNumberField = field as PdfAutomaticField;
61
+ this.pageNumberFieldLocation = location;
62
+ this.scaleX = scaleX;
63
+ this.scaleY = scaleY;
64
+ }
65
+ }
66
+ /* tslint:enable */
67
+ // Properties
68
+ /**
69
+ * Gets or sets the location.
70
+ * @private
71
+ */
72
+ public get location() : PointF {
73
+ return this.pageNumberFieldLocation;
74
+ }
75
+ public set location(value : PointF) {
76
+ this.pageNumberFieldLocation = value;
77
+ }
78
+ /**
79
+ * Gets or sets the field.
80
+ * @private
81
+ */
82
+ public get field() : PdfAutomaticField {
83
+ return this.pageNumberField;
84
+ }
85
+ public set field(value : PdfAutomaticField) {
86
+ this.pageNumberField = value;
87
+ }
88
+ /**
89
+ * Gets or sets the scaling X factor.
90
+ * @private
91
+ */
92
+ public get scalingX() : number {
93
+ return this.scaleX;
94
+ }
95
+ public set scalingX(value : number) {
96
+ this.scaleX = value;
97
+ }
98
+ /**
99
+ * Gets or sets the scaling Y factor.
100
+ * @private
101
+ */
102
+ public get scalingY() : number {
103
+ return this.scaleY;
104
+ }
105
+ public set scalingY(value : number) {
106
+ this.scaleY = value;
107
+ }
108
+ }
@@ -0,0 +1,127 @@
1
+ /**
2
+ * PdfAutomaticField.ts class for EJ2-PDF
3
+ */
4
+ import { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';
5
+ import { PdfFont } from './../../graphics/fonts/pdf-font';
6
+ import { PdfBrush } from './../../graphics/brushes/pdf-brush';
7
+ import { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';
8
+ import { PdfStringFormat } from './../../graphics/fonts/pdf-string-format';
9
+ import { PdfPen } from './../../graphics/pdf-pen';
10
+ import { PdfGraphics } from './../../graphics/pdf-graphics';
11
+ import { PdfColor } from './../../graphics/pdf-color';
12
+ import { PdfDocument } from './../pdf-document';
13
+ import { PdfGraphicsElement } from './../../graphics/figures/base/graphics-element';
14
+ import { PdfAutomaticFieldInfo } from './automatic-field-info';
15
+ import { PdfPage } from './../../pages/pdf-page';
16
+ /**
17
+ * Represents a fields which is calculated before the document saves.
18
+ */
19
+ export abstract class PdfAutomaticField extends PdfGraphicsElement {
20
+ // Fields
21
+ private internalBounds : RectangleF = new RectangleF(0, 0, 0, 0);
22
+ private internalFont : PdfFont;
23
+ private internalBrush : PdfBrush;
24
+ private internalPen : PdfPen;
25
+ private internalStringFormat : PdfStringFormat;
26
+ private internalTemplateSize : SizeF = new SizeF(0, 0);
27
+ // Constructors
28
+ protected constructor() {
29
+ super();
30
+ }
31
+ // Properties
32
+ public get bounds() : RectangleF {
33
+ return this.internalBounds;
34
+ }
35
+ public set bounds(value : RectangleF) {
36
+ this.internalBounds = value;
37
+ }
38
+ public get size() : SizeF {
39
+ return new SizeF(this.bounds.width, this.bounds.height);
40
+ }
41
+ public set size(value : SizeF) {
42
+ this.bounds.width = value.width;
43
+ this.bounds.height = value.height;
44
+ }
45
+ public get location() : PointF {
46
+ return new PointF(this.bounds.x, this.bounds.y);
47
+ }
48
+ public set location(value : PointF) {
49
+ this.bounds.x = value.x;
50
+ this.bounds.y = value.y;
51
+ }
52
+ public get font() : PdfFont {
53
+ return this.internalFont;
54
+ }
55
+ public set font(value : PdfFont) {
56
+ this.internalFont = value;
57
+ }
58
+ public get brush() : PdfBrush {
59
+ return this.internalBrush;
60
+ }
61
+ public set brush(value : PdfBrush) {
62
+ this.internalBrush = value;
63
+ }
64
+ public get pen() : PdfPen {
65
+ return this.internalPen;
66
+ }
67
+ public set pen(value : PdfPen) {
68
+ this.internalPen = value;
69
+ }
70
+ public get stringFormat() : PdfStringFormat {
71
+ return this.internalStringFormat;
72
+ }
73
+ public set stringFormat(value : PdfStringFormat) {
74
+ this.internalStringFormat = value;
75
+ }
76
+ // Implementation
77
+ public abstract getValue(graphics : PdfGraphics) : string;
78
+ public abstract performDraw(graphics : PdfGraphics, location : PointF, scalingX : number, scalingY : number) : void;
79
+ public performDrawHelper(graphics : PdfGraphics, location : PointF, scalingX : number, scalingY : number) : void {
80
+ if (this.bounds.height === 0 || this.bounds.width === 0) {
81
+ let text : string = this.getValue(graphics);
82
+ this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);
83
+ }
84
+ }
85
+ public draw(graphics : PdfGraphics) : void
86
+ public draw(graphics : PdfGraphics, location : PointF) : void
87
+ public draw(graphics : PdfGraphics, x : number, y : number) : void
88
+ public draw(arg1 ?: PdfGraphics, arg2 ?: number | PointF, arg3 ?: number) : void {
89
+ if (typeof arg2 === 'undefined') {
90
+ let location : PointF = new PointF(0, 0);
91
+ this.draw(arg1, location);
92
+ } else if (arg2 instanceof PointF) {
93
+ this.draw(arg1, arg2.x, arg2.y);
94
+ } else {
95
+ this.drawHelper(arg1, arg2, arg3);
96
+ let info : PdfAutomaticFieldInfo = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));
97
+ arg1.automaticFields.add(info);
98
+ }
99
+ }
100
+ protected getSize() : SizeF {
101
+ if (this.bounds.height === 0 || this.bounds.width === 0) {
102
+ return this.internalTemplateSize;
103
+ } else {
104
+ return this.size;
105
+ }
106
+ }
107
+ protected drawInternal(graphics : PdfGraphics) : void {
108
+ //
109
+ }
110
+ /* tslint:disable */
111
+ protected getBrush() : PdfBrush {
112
+ return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;
113
+ }
114
+ protected getFont() : PdfFont {
115
+ return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;
116
+ }
117
+ /* tslint:enable */
118
+ public getPageFromGraphics(graphics : PdfGraphics) : PdfPage {
119
+ if (typeof graphics.page !== 'undefined' && graphics.page !== null) {
120
+ let page : PdfPage = graphics.page as PdfPage;
121
+ return page;
122
+ } else {
123
+ let page : PdfPage = graphics.currentPage as PdfPage;
124
+ return page;
125
+ }
126
+ }
127
+ }
@@ -0,0 +1,76 @@
1
+ /**
2
+ * PdfCompositeField.ts class for EJ2-PDF
3
+ */
4
+ import { PdfMultipleValueField } from './multiple-value-field';
5
+ import { PdfAutomaticField } from './automatic-field';
6
+ import { PdfFont } from './../../graphics/fonts/pdf-font';
7
+ import { PdfBrush } from './../../graphics/brushes/pdf-brush';
8
+ import { PdfGraphics } from './../../graphics/pdf-graphics';
9
+ /**
10
+ * Represents class which can concatenate multiple automatic fields into single string.
11
+ */
12
+ export class PdfCompositeField extends PdfMultipleValueField {
13
+ // Fields
14
+ /**
15
+ * Stores the array of automatic fields.
16
+ * @private
17
+ */
18
+ private internalAutomaticFields : PdfAutomaticField[] = null;
19
+ /**
20
+ * Stores the text value of the field.
21
+ * @private
22
+ */
23
+ private internalText : string = '';
24
+ // Constructor
25
+ /**
26
+ * Initialize a new instance of `PdfCompositeField` class.
27
+ * @param font Font of the field.
28
+ * @param brush Color of the field.
29
+ * @param text Content of the field.
30
+ * @param list List of the automatic fields in specific order based on the text content.
31
+ */
32
+ public constructor(font : PdfFont, brush : PdfBrush, text : string, ...list : PdfAutomaticField[]) {
33
+ super();
34
+ this.font = font;
35
+ this.brush = brush;
36
+ this.text = text;
37
+ this.automaticFields = list;
38
+ }
39
+ // Properties
40
+ /**
41
+ * Gets and sets the content of the field.
42
+ * @public
43
+ */
44
+ public get text() : string {
45
+ return this.internalText;
46
+ }
47
+ public set text(value : string) {
48
+ this.internalText = value;
49
+ }
50
+ /**
51
+ * Gets and sets the list of the field to drawn.
52
+ * @public
53
+ */
54
+ public get automaticFields() : PdfAutomaticField[] {
55
+ return this.internalAutomaticFields;
56
+ }
57
+ public set automaticFields(value : PdfAutomaticField[]) {
58
+ this.internalAutomaticFields = value;
59
+ }
60
+ // Implementation
61
+ /**
62
+ * Return the actual value generated from the list of automatic fields.
63
+ * @public
64
+ */
65
+ public getValue(graphics : PdfGraphics) : string {
66
+ let values : string[] = [];
67
+ let text : string = this.text.toString();
68
+ if (typeof this.automaticFields !== 'undefined' && this.automaticFields != null && this.automaticFields.length > 0) {
69
+ for (let i : number = 0; i < this.automaticFields.length; i++) {
70
+ let automaticField : PdfAutomaticField = this.automaticFields[i];
71
+ text = text.replace('{' + i + '}', automaticField.getValue(graphics));
72
+ }
73
+ }
74
+ return text;
75
+ }
76
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * PdfAutomaticField.ts class for EJ2-PDF
3
+ */
4
+ import { PdfAutomaticField } from './automatic-field';
5
+ import { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';
6
+ import { PdfTemplateValuePair } from './pdf-template-value-pair';
7
+ import { PdfGraphics } from './../../graphics/pdf-graphics';
8
+ import { SizeF, PointF } from './../../drawing/pdf-drawing';
9
+ import { PdfTemplate } from './../../graphics/figures/pdf-template';
10
+ /**
11
+ * Represents automatic field which has the same value within the `PdfGraphics`.
12
+ */
13
+ export abstract class PdfMultipleValueField extends PdfAutomaticField {
14
+ // Fields
15
+ /**
16
+ * Stores the instance of dictionary values of `graphics and template value pair`.
17
+ * @private
18
+ */
19
+ private list : TemporaryDictionary<PdfGraphics, PdfTemplateValuePair> = new TemporaryDictionary<PdfGraphics, PdfTemplateValuePair>();
20
+ public constructor() {
21
+ super();
22
+ }
23
+ // Implementation
24
+ /* tslint:disable */
25
+ public performDraw(graphics : PdfGraphics, location : PointF, scalingX : number, scalingY : number) : void {
26
+ super.performDrawHelper(graphics, location, scalingX, scalingY);
27
+ let value : string = this.getValue(graphics);
28
+ let template : PdfTemplate = new PdfTemplate(this.getSize());
29
+ this.list.setValue(graphics, new PdfTemplateValuePair(template, value));
30
+ let g : PdfGraphics = template.graphics;
31
+ let size : SizeF = this.getSize();
32
+ template.graphics.drawString(value, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);
33
+ let drawLocation : PointF = new PointF(location.x + this.location.x, location.y + this.location.y);
34
+ graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));
35
+ }
36
+ /* tslint:enable */
37
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * PdfPageCountField.ts class for EJ2-PDF
3
+ */
4
+ import { PdfSingleValueField } from './single-value-field';
5
+ import { PdfNumberStyle } from './../../pages/enum';
6
+ import { PdfFont } from './../../graphics/fonts/pdf-font';
7
+ import { PdfBrush } from './../../graphics/brushes/pdf-brush';
8
+ import { RectangleF } from './../../drawing/pdf-drawing';
9
+ import { PdfGraphics } from './../../graphics/pdf-graphics';
10
+ import { PdfPage } from './../../pages/pdf-page';
11
+ import { PdfDocument } from './../pdf-document';
12
+ import { PdfNumbersConvertor } from './pdf-numbers-convertor';
13
+ /**
14
+ * Represents total PDF document page count automatic field.
15
+ */
16
+ export class PdfPageCountField extends PdfSingleValueField {
17
+ // Fields
18
+ /**
19
+ * Stores the number style of the field.
20
+ * @private
21
+ */
22
+ private internalNumberStyle : PdfNumberStyle = PdfNumberStyle.Numeric;
23
+ // Constructors
24
+ /**
25
+ * Initialize a new instance for page number field.
26
+ * @public
27
+ */
28
+ public constructor(font : PdfFont)
29
+ /**
30
+ * Initialize a new instance for page number field.
31
+ * @public
32
+ */
33
+ public constructor(font : PdfFont, bounds : RectangleF)
34
+ /**
35
+ * Initialize a new instance for page number field.
36
+ * @public
37
+ */
38
+ public constructor(font : PdfFont, brush: PdfBrush)
39
+ public constructor(font : PdfFont, arg2 ?: RectangleF|PdfBrush) {
40
+ super();
41
+ if (typeof arg2 === 'undefined') {
42
+ this.font = font;
43
+ } else if ( arg2 instanceof PdfBrush) {
44
+ this.font = font;
45
+ this.brush = arg2;
46
+ } else {
47
+ this.font = font;
48
+ this.bounds = arg2;
49
+ }
50
+ }
51
+ // Properties
52
+ /**
53
+ * Gets and sets the number style of the field.
54
+ * @public
55
+ */
56
+ public get numberStyle() : PdfNumberStyle {
57
+ return this.internalNumberStyle;
58
+ }
59
+ public set numberStyle(value : PdfNumberStyle) {
60
+ this.internalNumberStyle = value;
61
+ }
62
+ // Implementation
63
+ /**
64
+ * Return the actual value of the content to drawn.
65
+ * @public
66
+ */
67
+ public getValue(graphics : PdfGraphics) : string {
68
+ let result : string = null;
69
+ let page : PdfPage = this.getPageFromGraphics(graphics);
70
+ let document : PdfDocument = page.section.parent.document;
71
+ let count : number = document.pages.count;
72
+ result = PdfNumbersConvertor.convert(count, this.numberStyle);
73
+ return result;
74
+ }
75
+ }