@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,157 @@
1
+ /**
2
+ * PdfNumbersConvertor.ts class for EJ2-PDF
3
+ * @private
4
+ */
5
+ import { PdfNumberStyle } from './../../pages/enum';
6
+ /**
7
+ * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,
8
+ * @private
9
+ */
10
+ export class PdfNumbersConvertor {
11
+ // Fields
12
+ /**
13
+ * numbers of letters in english [readonly].
14
+ * @default = 26.0
15
+ * @private
16
+ */
17
+ private static readonly letterLimit : number = 26.0;
18
+ /**
19
+ * Resturns `acsii start index` value.
20
+ * @default 64
21
+ * @private
22
+ */
23
+ private static readonly acsiiStartIndex : number = <number>(65 - 1);
24
+ // Static methods
25
+ /**
26
+ * Convert string value from page number with correct format.
27
+ * @private
28
+ */
29
+ public static convert(intArabic : number, numberStyle : PdfNumberStyle) : string {
30
+ let result : string = '';
31
+ switch (numberStyle) {
32
+ case PdfNumberStyle.None:
33
+ result = '';
34
+ break;
35
+ case PdfNumberStyle.Numeric:
36
+ result = intArabic.toString();
37
+ break;
38
+ case PdfNumberStyle.LowerLatin:
39
+ result = this.arabicToLetter(intArabic).toLowerCase();
40
+ break;
41
+ case PdfNumberStyle.LowerRoman:
42
+ result = this.arabicToRoman(intArabic).toLowerCase();
43
+ break;
44
+ case PdfNumberStyle.UpperLatin:
45
+ result = this.arabicToLetter(intArabic);
46
+ break;
47
+ case PdfNumberStyle.UpperRoman:
48
+ result = this.arabicToRoman(intArabic);
49
+ break;
50
+ }
51
+ return result;
52
+ }
53
+ /**
54
+ * Converts `arabic to roman` letters.
55
+ * @private
56
+ */
57
+ private static arabicToRoman(intArabic : number) : string {
58
+ let retval : string = '';
59
+ let retvalM : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 1000, 'M');
60
+ retval += retvalM.returnValue;
61
+ intArabic = retvalM.intArabic;
62
+ let retvalCM : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 900, 'CM');
63
+ retval += retvalCM.returnValue;
64
+ intArabic = retvalCM.intArabic;
65
+ let retvalD : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 500, 'D');
66
+ retval += retvalD.returnValue;
67
+ intArabic = retvalD.intArabic;
68
+ let retvalCD : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 400, 'CD');
69
+ retval += retvalCD.returnValue;
70
+ intArabic = retvalCD.intArabic;
71
+ let retvalC : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 100, 'C');
72
+ retval += retvalC.returnValue;
73
+ intArabic = retvalC.intArabic;
74
+ let retvalXC : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 90, 'XC');
75
+ retval += retvalXC.returnValue;
76
+ intArabic = retvalXC.intArabic;
77
+ let retvalL : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 50, 'L');
78
+ retval += retvalL.returnValue;
79
+ intArabic = retvalL.intArabic;
80
+ let retvalXL : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 40, 'XL');
81
+ retval += retvalXL.returnValue;
82
+ intArabic = retvalXL.intArabic;
83
+ let retvalX : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 10, 'X');
84
+ retval += retvalX.returnValue;
85
+ intArabic = retvalX.intArabic;
86
+ let retvalIX : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 9, 'IX');
87
+ retval += retvalIX.returnValue;
88
+ intArabic = retvalIX.intArabic;
89
+ let retvalV : {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 5, 'V');
90
+ retval += retvalV.returnValue;
91
+ intArabic = retvalV.intArabic;
92
+ let retvalIV: {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 4, 'IV');
93
+ retval += retvalIV.returnValue;
94
+ intArabic = retvalIV.intArabic;
95
+ let retvalI: {returnValue : string , intArabic : number } = this.generateNumber(intArabic, 1, 'I');
96
+ retval += retvalI.returnValue;
97
+ intArabic = retvalI.intArabic;
98
+
99
+ return retval.toString();
100
+ }
101
+ /**
102
+ * Converts `arabic to normal letters`.
103
+ * @private
104
+ */
105
+ private static arabicToLetter(arabic : number) : string {
106
+ let stack : number[] = this.convertToLetter(arabic);
107
+ let result : string = '';
108
+ while (stack.length > 0) {
109
+ let num : number = stack.pop();
110
+ result = this.appendChar(result, num);
111
+ }
112
+ return result.toString();
113
+ }
114
+ /**
115
+ * Generate a string value of an input number.
116
+ * @private
117
+ */
118
+ private static generateNumber(value : number, magnitude : number, letter : string) : { returnValue : string, intArabic : number } {
119
+ let numberstring : string = '';
120
+ while (value >= magnitude) {
121
+ value -= magnitude;
122
+ numberstring += letter;
123
+ }
124
+ return {returnValue : numberstring.toString(), intArabic : value };
125
+ }
126
+ /**
127
+ * Convert a input number into letters.
128
+ * @private
129
+ */
130
+ private static convertToLetter(arabic : number) : number[] {
131
+ if (arabic <= 0) {
132
+ throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');
133
+ }
134
+ let stack : number[] = [];
135
+ while ((arabic as number) > this.letterLimit) {
136
+ let remainder : number = arabic % this.letterLimit;
137
+ if (remainder === 0.0) {
138
+ arabic = arabic / this.letterLimit - 1;
139
+ remainder = this.letterLimit;
140
+ } else {
141
+ arabic /= this.letterLimit;
142
+ }
143
+ stack.push(remainder as number);
144
+ }
145
+ stack.push(arabic as number);
146
+ return stack;
147
+ }
148
+ /**
149
+ * Convert number to actual string value.
150
+ * @private
151
+ */
152
+ private static appendChar(builder : string, value : number) : string {
153
+ let letter : string = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);
154
+ builder += letter;
155
+ return builder;
156
+ }
157
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * PdfPageNumberField.ts class for EJ2-PDF
3
+ */
4
+ import { PdfFont } from './../../graphics/fonts/pdf-font';
5
+ import { PdfBrush } from './../../graphics/brushes/pdf-brush';
6
+ import { PdfPage } from './../../pages/pdf-page';
7
+ import { PdfGraphics } from './../../graphics/pdf-graphics';
8
+ import { PdfDocument } from './../pdf-document';
9
+ import { RectangleF } from './../../drawing/pdf-drawing';
10
+ import { PdfNumberStyle } from './../../pages/enum';
11
+ import { PdfNumbersConvertor } from './pdf-numbers-convertor';
12
+ import { PdfMultipleValueField } from './multiple-value-field';
13
+ /**
14
+ * Represents PDF document `page number field`.
15
+ * @public
16
+ */
17
+ export class PdfPageNumberField extends PdfMultipleValueField {
18
+ // Constructors
19
+ /**
20
+ * Initialize a new instance for page number field.
21
+ * @public
22
+ */
23
+ public constructor(font : PdfFont)
24
+ /**
25
+ * Initialize a new instance for page number field.
26
+ * @public
27
+ */
28
+ public constructor(font : PdfFont, bounds : RectangleF)
29
+ /**
30
+ * Initialize a new instance for page number field.
31
+ * @public
32
+ */
33
+ public constructor(font : PdfFont, brush: PdfBrush)
34
+ public constructor(font : PdfFont, arg2 ?: RectangleF|PdfBrush) {
35
+ super();
36
+ if (typeof arg2 === 'undefined') {
37
+ this.font = font;
38
+ } else if ( arg2 instanceof PdfBrush) {
39
+ this.font = font;
40
+ this.brush = arg2;
41
+ } else {
42
+ this.font = font;
43
+ this.bounds = arg2;
44
+ }
45
+ }
46
+ // Fields
47
+ /**
48
+ * Stores the number style of the page number field.
49
+ * @private
50
+ */
51
+ private internalNumberStyle : PdfNumberStyle = PdfNumberStyle.Numeric;
52
+ // Properties
53
+ /**
54
+ * Gets and sets the number style of the page number field.
55
+ * @private
56
+ */
57
+ public get numberStyle() : PdfNumberStyle {
58
+ return this.internalNumberStyle;
59
+ }
60
+ public set numberStyle(value : PdfNumberStyle) {
61
+ this.internalNumberStyle = value;
62
+ }
63
+ /**
64
+ * Return the `string` value of page number field.
65
+ * @public
66
+ */
67
+ public getValue(graphics : PdfGraphics) : string {
68
+ let result : string = null;
69
+ let page : PdfPage = this.getPageFromGraphics(graphics);
70
+ result = this.internalGetValue(page);
71
+ return result;
72
+ }
73
+ /**
74
+ * Internal method to `get actual value of page number`.
75
+ * @private
76
+ */
77
+ protected internalGetValue(page : PdfPage) : string {
78
+ let document : PdfDocument = page.document;
79
+ let pageIndex : number = document.pages.indexOf(page) + 1;
80
+ return PdfNumbersConvertor.convert(pageIndex, this.numberStyle);
81
+ }
82
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * PdfTemplateValuePair.ts class for EJ2-PDF
3
+ * @private
4
+ */
5
+ import { PdfTemplate } from './../../graphics/figures/pdf-template';
6
+ /**
7
+ * Represent class to store information about `template and value pairs`.
8
+ * @private
9
+ */
10
+ export class PdfTemplateValuePair {
11
+ // Fields
12
+ /**
13
+ * Internal variable to store template.
14
+ * @default null
15
+ * @private
16
+ */
17
+ private pdfTemplate : PdfTemplate = null;
18
+ /**
19
+ * Intenal variable to store value.
20
+ * @private
21
+ */
22
+ private content : string = '';
23
+
24
+ // Constructors
25
+ /**
26
+ * Initializes a new instance of the 'PdfTemplateValuePair' class.
27
+ * @private
28
+ */
29
+ public constructor()
30
+ public constructor(template : PdfTemplate, value : string)
31
+ public constructor(template ?: PdfTemplate, value ?: string) {
32
+ if (typeof template === 'undefined') {
33
+ //
34
+ } else {
35
+ this.template = template;
36
+ this.value = value;
37
+ }
38
+ }
39
+ // Properties
40
+ /**
41
+ * Gets or sets the template.
42
+ * @private
43
+ */
44
+ public get template() : PdfTemplate {
45
+ return this.pdfTemplate;
46
+ }
47
+ public set template(value : PdfTemplate) {
48
+ this.pdfTemplate = value;
49
+ }
50
+ /**
51
+ * Gets or sets the value.
52
+ * @private
53
+ */
54
+ public get value() : string {
55
+ return this.content;
56
+ }
57
+ public set value(value : string) {
58
+ this.content = value;
59
+ }
60
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * PdfSingleValueField.ts class for EJ2-PDF
3
+ */
4
+ import { PdfAutomaticField } from './automatic-field';
5
+ import { PdfGraphics } from './../../graphics/pdf-graphics';
6
+ import { TemporaryDictionary } from './../../collections/object-object-pair/dictionary';
7
+ import { PdfTemplateValuePair } from './pdf-template-value-pair';
8
+ import { PdfDocumentBase } from './../pdf-document-base';
9
+ import { PdfDocument } from './../pdf-document';
10
+ import { PdfPage } from './../../pages/pdf-page';
11
+ import { PointF, SizeF} from './../../drawing/pdf-drawing';
12
+ import { PdfTemplate } from './../../graphics/figures/pdf-template';
13
+ /**
14
+ * Represents automatic field which has the same value in the whole document.
15
+ */
16
+ export abstract class PdfSingleValueField extends PdfAutomaticField {
17
+ // Fields
18
+ /* tslint:disable */
19
+ private list : TemporaryDictionary<PdfDocumentBase, PdfTemplateValuePair> = new TemporaryDictionary<PdfDocumentBase, PdfTemplateValuePair>();
20
+ /* tslint:enable */
21
+ private painterGraphics : PdfGraphics[] = [];
22
+ // Constructors
23
+ public constructor() {
24
+ super();
25
+ }
26
+ public performDraw(graphics : PdfGraphics, location : PointF, scalingX : number, scalingY : number) : void {
27
+ super.performDrawHelper(graphics, location, scalingX, scalingY);
28
+ let page : PdfPage = this.getPageFromGraphics(graphics);
29
+ let document : PdfDocument = page.document;
30
+ let textValue : string = this.getValue(graphics);
31
+ /* tslint:disable */
32
+ if (this.list.containsKey(document)) {
33
+ let pair : PdfTemplateValuePair = this.list.getValue(document) as PdfTemplateValuePair;
34
+ let drawLocation : PointF = new PointF(location.x + this.location.x, location.y + this.location.y);
35
+ graphics.drawPdfTemplate(pair.template, drawLocation, new SizeF(pair.template.width * scalingX, pair.template.height * scalingY));
36
+ this.painterGraphics.push(graphics);
37
+ } else {
38
+ let size : SizeF = this.getSize();
39
+ let template : PdfTemplate = new PdfTemplate(size);
40
+ this.list.setValue(document, new PdfTemplateValuePair(template, textValue));
41
+ template.graphics.drawString(textValue, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);
42
+ let drawLocation : PointF = new PointF(location.x + this.location.x, location.y + this.location.y);
43
+ graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));
44
+ this.painterGraphics.push(graphics);
45
+ }
46
+ /* tslint:enable */
47
+ }
48
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * PdfCatalog.ts class for EJ2-PDF
3
+ */
4
+ import { PdfDictionary } from './../primitives/pdf-dictionary';
5
+ import { PdfSectionCollection } from './../pages/pdf-section-collection';
6
+ import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';
7
+ import { PdfName } from './../primitives/pdf-name';
8
+ import { PdfReferenceHolder } from './../primitives/pdf-reference';
9
+ /**
10
+ * `PdfCatalog` class represents internal catalog of the Pdf document.
11
+ * @private
12
+ */
13
+ export class PdfCatalog extends PdfDictionary {
14
+ //fields
15
+ /**
16
+ * Internal variable to store collection of `sections`.
17
+ * @default null
18
+ * @private
19
+ */
20
+ private sections : PdfSectionCollection = null;
21
+ /**
22
+ * Internal variable for accessing fields from `DictionryProperties` class.
23
+ * @private
24
+ */
25
+ private tempDictionaryProperties : DictionaryProperties = new DictionaryProperties();
26
+ //constructor
27
+ /**
28
+ * Initializes a new instance of the `PdfCatalog` class.
29
+ * @private
30
+ */
31
+ public constructor() {
32
+ super();
33
+ this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));
34
+ }
35
+ //Properties
36
+ /**
37
+ * Gets or sets the sections, which contain `pages`.
38
+ * @private
39
+ */
40
+ public get pages() : PdfSectionCollection {
41
+ return this.sections;
42
+ }
43
+ public set pages(value : PdfSectionCollection) {
44
+ let dictionary : PdfDictionary = value.element as PdfDictionary;
45
+ // if (this.sections !== value) {
46
+ // this.sections = value;
47
+ // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));
48
+ // }
49
+ this.sections = value;
50
+ this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));
51
+ }
52
+ }
@@ -0,0 +1,166 @@
1
+ /**
2
+ * PdfDocumentBase.ts class for EJ2-PDF
3
+ */
4
+ import { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';
5
+ import { PdfCrossTable } from './../input-output/pdf-cross-table';
6
+ import { PdfCatalog } from './pdf-catalog';
7
+ import { StreamWriter } from '@syncfusion/ej2-file-utils';
8
+ import { Encoding } from '@syncfusion/ej2-file-utils';
9
+ import { PdfDocument } from './pdf-document';
10
+ import { PdfReference } from './../primitives/pdf-reference';
11
+ /**
12
+ * `PdfDocumentBase` class represent common properties of PdfDocument classes.
13
+ * @private
14
+ */
15
+ export class PdfDocumentBase {
16
+ //Fields
17
+ /**
18
+ * Collection of the main `objects`.
19
+ * @private
20
+ */
21
+ private objects : PdfMainObjectCollection;
22
+ /**
23
+ * The `cross table`.
24
+ * @private
25
+ */
26
+ private pdfCrossTable : PdfCrossTable;
27
+ /**
28
+ * `Object` that is saving currently.
29
+ * @private
30
+ */
31
+ private currentSavingObject : PdfReference;
32
+ /**
33
+ * Document `catlog`.
34
+ * @private
35
+ */
36
+ private pdfCatalog : PdfCatalog;
37
+ /**
38
+ * If the stream is copied, then it specifies true.
39
+ * @private
40
+ */
41
+ public isStreamCopied : boolean = false;
42
+ /**
43
+ * Instance of parent `document`.
44
+ * @private
45
+ */
46
+ public document : PdfDocument;
47
+ //constructor
48
+ /**
49
+ * Initializes a new instance of the `PdfDocumentBase` class.
50
+ * @private
51
+ */
52
+ public constructor()
53
+ /**
54
+ * Initializes a new instance of the `PdfDocumentBase` class with instance of PdfDocument as argument.
55
+ * @private
56
+ */
57
+ public constructor(document : PdfDocument)
58
+ public constructor(document? : PdfDocument) {
59
+ if (document instanceof PdfDocument) {
60
+ this.document = document;
61
+ }
62
+ }
63
+ //Prpperties
64
+ /**
65
+ * Gets the `PDF objects` collection, which stores all objects and references to it..
66
+ * @private
67
+ */
68
+ public get pdfObjects() : PdfMainObjectCollection {
69
+ return this.objects;
70
+ }
71
+ /**
72
+ * Gets the `cross-reference` table.
73
+ * @private
74
+ */
75
+ public get crossTable() : PdfCrossTable {
76
+ return this.pdfCrossTable;
77
+ }
78
+ /**
79
+ * Gets or sets the current saving `object number`.
80
+ * @private
81
+ */
82
+ public get currentSavingObj() : PdfReference {
83
+ return this.currentSavingObject;
84
+ }
85
+ public set currentSavingObj(value : PdfReference) {
86
+ this.currentSavingObject = value;
87
+ }
88
+ /**
89
+ * Gets the PDF document `catalog`.
90
+ * @private
91
+ */
92
+ public get catalog() : PdfCatalog {
93
+ return this.pdfCatalog;
94
+ }
95
+ public set catalog(value : PdfCatalog) {
96
+ this.pdfCatalog = value;
97
+ }
98
+ //Public methods
99
+ /**
100
+ * Sets the `main object collection`.
101
+ * @private
102
+ */
103
+ public setMainObjectCollection(mainObjectCollection : PdfMainObjectCollection) : void {
104
+ this.objects = mainObjectCollection;
105
+ }
106
+ /**
107
+ * Sets the `cross table`.
108
+ * @private
109
+ */
110
+ public setCrossTable(cTable : PdfCrossTable) : void {
111
+ this.pdfCrossTable = cTable;
112
+ }
113
+ /**
114
+ * Sets the `catalog`.
115
+ * @private
116
+ */
117
+ public setCatalog(catalog : PdfCatalog) : void {
118
+ this.pdfCatalog = catalog;
119
+ }
120
+ /**
121
+ * `Saves` the document to the specified filename.
122
+ * @private
123
+ */
124
+ public save(): Promise<{blobData: Blob}>
125
+ /**
126
+ * `Saves` the document to the specified filename.
127
+ * @public
128
+ * ```typescript
129
+ * // create a new PDF document
130
+ * let document : PdfDocument = new PdfDocument();
131
+ * // add a pages to the document
132
+ * let page1 : PdfPage = document.pages.add();
133
+ * //
134
+ * // save the document
135
+ * document.save('output.pdf');
136
+ * //
137
+ * // destroy the document
138
+ * document.destroy();
139
+ * ```
140
+ * @param filename Specifies the file name to save the output pdf document.
141
+ */
142
+ public save(filename : string) : void
143
+ public save(filename ?: string) : Promise<{blobData: Blob}> | void {
144
+ let encoding: Encoding = new Encoding(true);
145
+ let SW : StreamWriter = new StreamWriter(encoding);
146
+ if (typeof filename === 'undefined') {
147
+ let encoding: Encoding = new Encoding(true);
148
+ let SW: StreamWriter = new StreamWriter(encoding);
149
+ return new Promise((resolve: Function, reject: Function) => {
150
+ /* tslint:disable-next-line:no-any */
151
+ let obj: any = {};
152
+ obj.blobData = new Blob([this.document.docSave(SW, true)], {type : 'application/pdf'});
153
+ resolve(obj);
154
+ });
155
+ } else {
156
+ this.document.docSave(SW, filename, true);
157
+ }
158
+ }
159
+ /**
160
+ * `Clone` of parent object - PdfDocument.
161
+ * @private
162
+ */
163
+ public clone() : PdfDocument {
164
+ return this.document;
165
+ }
166
+ }