@syncfusion/ej2-pdf-export 22.1.34 → 22.1.37

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 (169) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/ej2-pdf-export.min.js +2 -2
  3. package/dist/ej2-pdf-export.umd.min.js +2 -2
  4. package/dist/ej2-pdf-export.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-pdf-export.es2015.js +748 -93
  6. package/dist/es6/ej2-pdf-export.es2015.js.map +1 -1
  7. package/dist/es6/ej2-pdf-export.es5.js +933 -225
  8. package/dist/es6/ej2-pdf-export.es5.js.map +1 -1
  9. package/dist/global/ej2-pdf-export.min.js +2 -2
  10. package/dist/global/ej2-pdf-export.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +5 -5
  13. package/src/implementation/document/pdf-catalog.d.ts +7 -0
  14. package/src/implementation/document/pdf-catalog.js +16 -0
  15. package/src/implementation/document/pdf-document-base.d.ts +13 -0
  16. package/src/implementation/document/pdf-document-base.js +18 -0
  17. package/src/implementation/document/pdf-viewer-preferences.d.ts +467 -0
  18. package/src/implementation/document/pdf-viewer-preferences.js +624 -0
  19. package/src/implementation/input-output/pdf-dictionary-properties.d.ts +55 -0
  20. package/src/implementation/input-output/pdf-dictionary-properties.js +55 -0
  21. package/dist/ts/implementation/actions/action.ts +0 -76
  22. package/dist/ts/implementation/actions/uri-action.ts +0 -52
  23. package/dist/ts/implementation/annotations/action-link-annotation.ts +0 -43
  24. package/dist/ts/implementation/annotations/annotation-collection.ts +0 -159
  25. package/dist/ts/implementation/annotations/annotation.ts +0 -241
  26. package/dist/ts/implementation/annotations/document-link-annotation.ts +0 -118
  27. package/dist/ts/implementation/annotations/link-annotation.ts +0 -32
  28. package/dist/ts/implementation/annotations/pdf-text-web-link.ts +0 -265
  29. package/dist/ts/implementation/annotations/uri-annotation.ts +0 -86
  30. package/dist/ts/implementation/collections/dictionary.ts +0 -150
  31. package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +0 -125
  32. package/dist/ts/implementation/collections/utils.ts +0 -38
  33. package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +0 -39
  34. package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +0 -108
  35. package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +0 -127
  36. package/dist/ts/implementation/document/automatic-fields/composite-field.ts +0 -76
  37. package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +0 -37
  38. package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +0 -75
  39. package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +0 -157
  40. package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +0 -82
  41. package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +0 -60
  42. package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +0 -48
  43. package/dist/ts/implementation/document/pdf-catalog.ts +0 -52
  44. package/dist/ts/implementation/document/pdf-document-base.ts +0 -166
  45. package/dist/ts/implementation/document/pdf-document-template.ts +0 -310
  46. package/dist/ts/implementation/document/pdf-document.ts +0 -342
  47. package/dist/ts/implementation/drawing/pdf-drawing.ts +0 -218
  48. package/dist/ts/implementation/general/enum.ts +0 -21
  49. package/dist/ts/implementation/general/functions/pdf-function.ts +0 -66
  50. package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +0 -62
  51. package/dist/ts/implementation/general/pdf-cache-collection.ts +0 -97
  52. package/dist/ts/implementation/general/pdf-collection.ts +0 -41
  53. package/dist/ts/implementation/general/pdf-destination.ts +0 -170
  54. package/dist/ts/implementation/graphics/brushes/enum.ts +0 -237
  55. package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +0 -294
  56. package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +0 -68
  57. package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +0 -2438
  58. package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +0 -295
  59. package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +0 -311
  60. package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +0 -406
  61. package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +0 -290
  62. package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +0 -107
  63. package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +0 -304
  64. package/dist/ts/implementation/graphics/constants.ts +0 -31
  65. package/dist/ts/implementation/graphics/enum.ts +0 -413
  66. package/dist/ts/implementation/graphics/figures/arc.ts +0 -133
  67. package/dist/ts/implementation/graphics/figures/base/draw-element.ts +0 -59
  68. package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +0 -260
  69. package/dist/ts/implementation/graphics/figures/base/fill-element.ts +0 -72
  70. package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +0 -34
  71. package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +0 -69
  72. package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +0 -276
  73. package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +0 -205
  74. package/dist/ts/implementation/graphics/figures/ellipse-part.ts +0 -76
  75. package/dist/ts/implementation/graphics/figures/enum.ts +0 -80
  76. package/dist/ts/implementation/graphics/figures/layout-element.ts +0 -132
  77. package/dist/ts/implementation/graphics/figures/path.ts +0 -646
  78. package/dist/ts/implementation/graphics/figures/pdf-template.ts +0 -205
  79. package/dist/ts/implementation/graphics/figures/rectangle-area.ts +0 -108
  80. package/dist/ts/implementation/graphics/figures/text-element.ts +0 -445
  81. package/dist/ts/implementation/graphics/fonts/enum.ts +0 -385
  82. package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +0 -248
  83. package/dist/ts/implementation/graphics/fonts/pdf-font.ts +0 -316
  84. package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +0 -606
  85. package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +0 -243
  86. package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +0 -474
  87. package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +0 -165
  88. package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +0 -958
  89. package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +0 -374
  90. package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +0 -255
  91. package/dist/ts/implementation/graphics/fonts/string-layouter.ts +0 -617
  92. package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +0 -275
  93. package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +0 -206
  94. package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +0 -18
  95. package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +0 -18
  96. package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +0 -14
  97. package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +0 -26
  98. package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +0 -35
  99. package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +0 -94
  100. package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +0 -56
  101. package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +0 -10
  102. package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +0 -14
  103. package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +0 -106
  104. package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +0 -58
  105. package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +0 -33
  106. package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +0 -22
  107. package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +0 -42
  108. package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +0 -1254
  109. package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +0 -26
  110. package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +0 -26
  111. package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +0 -577
  112. package/dist/ts/implementation/graphics/images/byte-array.ts +0 -137
  113. package/dist/ts/implementation/graphics/images/image-decoder.ts +0 -439
  114. package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +0 -110
  115. package/dist/ts/implementation/graphics/images/pdf-image.ts +0 -132
  116. package/dist/ts/implementation/graphics/pdf-color.ts +0 -478
  117. package/dist/ts/implementation/graphics/pdf-graphics.ts +0 -2424
  118. package/dist/ts/implementation/graphics/pdf-margins.ts +0 -124
  119. package/dist/ts/implementation/graphics/pdf-pen.ts +0 -370
  120. package/dist/ts/implementation/graphics/pdf-resources.ts +0 -300
  121. package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +0 -246
  122. package/dist/ts/implementation/graphics/pdf-transparency.ts +0 -93
  123. package/dist/ts/implementation/graphics/unit-convertor.ts +0 -96
  124. package/dist/ts/implementation/input-output/big-endian-writer.ts +0 -121
  125. package/dist/ts/implementation/input-output/cross-table.ts +0 -21
  126. package/dist/ts/implementation/input-output/enum.ts +0 -16
  127. package/dist/ts/implementation/input-output/pdf-cross-table.ts +0 -524
  128. package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +0 -515
  129. package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +0 -194
  130. package/dist/ts/implementation/input-output/pdf-operators.ts +0 -363
  131. package/dist/ts/implementation/input-output/pdf-stream-writer.ts +0 -681
  132. package/dist/ts/implementation/input-output/pdf-writer.ts +0 -88
  133. package/dist/ts/implementation/pages/enum.ts +0 -201
  134. package/dist/ts/implementation/pages/page-added-event-arguments.ts +0 -39
  135. package/dist/ts/implementation/pages/pdf-document-page-collection.ts +0 -180
  136. package/dist/ts/implementation/pages/pdf-page-base.ts +0 -181
  137. package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +0 -348
  138. package/dist/ts/implementation/pages/pdf-page-layer.ts +0 -271
  139. package/dist/ts/implementation/pages/pdf-page-settings.ts +0 -192
  140. package/dist/ts/implementation/pages/pdf-page-size.ts +0 -162
  141. package/dist/ts/implementation/pages/pdf-page-template-element.ts +0 -659
  142. package/dist/ts/implementation/pages/pdf-page.ts +0 -235
  143. package/dist/ts/implementation/pages/pdf-section-collection.ts +0 -187
  144. package/dist/ts/implementation/pages/pdf-section-page-collection.ts +0 -61
  145. package/dist/ts/implementation/pages/pdf-section-templates.ts +0 -96
  146. package/dist/ts/implementation/pages/pdf-section.ts +0 -644
  147. package/dist/ts/implementation/primitives/pdf-array.ts +0 -386
  148. package/dist/ts/implementation/primitives/pdf-boolean.ts +0 -119
  149. package/dist/ts/implementation/primitives/pdf-dictionary.ts +0 -513
  150. package/dist/ts/implementation/primitives/pdf-name.ts +0 -218
  151. package/dist/ts/implementation/primitives/pdf-number.ts +0 -165
  152. package/dist/ts/implementation/primitives/pdf-reference.ts +0 -430
  153. package/dist/ts/implementation/primitives/pdf-stream.ts +0 -336
  154. package/dist/ts/implementation/primitives/pdf-string.ts +0 -397
  155. package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +0 -2027
  156. package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +0 -1193
  157. package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +0 -206
  158. package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +0 -470
  159. package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +0 -853
  160. package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +0 -240
  161. package/dist/ts/implementation/structured-elements/grid/styles/style.ts +0 -424
  162. package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +0 -16
  163. package/dist/ts/interfaces/i-pdf-cache.ts +0 -23
  164. package/dist/ts/interfaces/i-pdf-changable.ts +0 -17
  165. package/dist/ts/interfaces/i-pdf-clonable.ts +0 -12
  166. package/dist/ts/interfaces/i-pdf-primitives.ts +0 -45
  167. package/dist/ts/interfaces/i-pdf-true-type-font.ts +0 -48
  168. package/dist/ts/interfaces/i-pdf-wrapper.ts +0 -13
  169. package/dist/ts/interfaces/i-pdf-writer.ts +0 -29
@@ -1,617 +0,0 @@
1
- /**
2
- * PdfStringLayouter.ts class for EJ2-PDF
3
- */
4
- import { PdfFont } from './pdf-font';
5
- import { PdfStringFormat } from './pdf-string-format';
6
- import { SizeF, RectangleF, PointF } from './../../drawing/pdf-drawing';
7
- import { PdfWordWrapType } from './enum';
8
- import { StringTokenizer } from './string-tokenizer';
9
- /**
10
- * Class `lay outing the text`.
11
- */
12
- export class PdfStringLayouter {
13
- // Fields
14
- /**
15
- * `Text` data.
16
- * @private
17
- */
18
- private text : string;
19
- /**
20
- * Pdf `font`.
21
- * @private
22
- */
23
- private font : PdfFont;
24
- /**
25
- * String `format`.
26
- * @private
27
- */
28
- private format : PdfStringFormat;
29
- /**
30
- * `Size` of the text.
31
- * @private
32
- */
33
- private size : SizeF;
34
- /**
35
- * `Bounds` of the text.
36
- * @private
37
- */
38
- private rectangle : RectangleF;
39
- /**
40
- * Pdf page `height`.
41
- * @private
42
- */
43
- private pageHeight : number;
44
- /**
45
- * String `tokenizer`.
46
- * @private
47
- */
48
- private reader : StringTokenizer;
49
- /**
50
- * Specifies if [`isTabReplaced`].
51
- * @private
52
- */
53
- private isTabReplaced : boolean;
54
- /**
55
- * Count of tab `occurance`.
56
- * @private
57
- */
58
- private tabOccuranceCount : number;
59
- /**
60
- * Checks whether the x co-ordinate is need to set as client size or not.
61
- * @hidden
62
- * @private
63
- */
64
- private isOverloadWithPosition : boolean = false;
65
- /**
66
- * Stores client size of the page if the layout method invoked with `PointF` overload.
67
- * @hidden
68
- * @private
69
- */
70
- private clientSize : SizeF;
71
- // Constructors
72
- /**
73
- * Initializes a new instance of the `StringLayouter` class.
74
- * @private
75
- */
76
- public constructor() {
77
- //
78
- }
79
-
80
- //Public methods
81
- /**
82
- * `Layouts` the text.
83
- * @private
84
- */
85
- public layout(text : string, font : PdfFont, format : PdfStringFormat, rectangle : RectangleF,
86
- pageHeight : number, recalculateBounds : boolean, clientSize : SizeF) : PdfStringLayoutResult
87
- public layout(text : string, font : PdfFont, format : PdfStringFormat, size : SizeF,
88
- recalculateBounds : boolean, clientSize : SizeF) : PdfStringLayoutResult
89
- public layout(arg1 : string, arg2 : PdfFont, arg3 : PdfStringFormat, arg4 : SizeF|RectangleF,
90
- arg5 : number | boolean, arg6 : boolean | SizeF, arg7 ?: SizeF) : PdfStringLayoutResult {
91
- if (arg4 instanceof RectangleF) {
92
- this.initialize(arg1, arg2, arg3, <RectangleF>arg4, arg5 as number);
93
- this.isOverloadWithPosition = arg6 as boolean;
94
- this.clientSize = arg7 as SizeF;
95
- let result : PdfStringLayoutResult = this.doLayout();
96
- this.clear();
97
- return result;
98
- } else {
99
- this.initialize(arg1, arg2, arg3, arg4 as SizeF);
100
- this.isOverloadWithPosition = arg5 as boolean;
101
- this.clientSize = arg6 as SizeF;
102
- let result : PdfStringLayoutResult = this.doLayout();
103
- this.clear();
104
- return result;
105
- }
106
- }
107
- // recalculateBounds : boolean, clientSize : SizeF
108
- //Implementation
109
- /**
110
- * `Initializes` internal data.
111
- * @private
112
- */
113
- private initialize(text : string, font : PdfFont, format : PdfStringFormat, rectangle : RectangleF, pageHeight : number) : void
114
- private initialize(text : string, font : PdfFont, format : PdfStringFormat, size : SizeF) : void
115
- private initialize(text : string, font : PdfFont, format : PdfStringFormat, rectSize : SizeF|RectangleF,
116
- pageHeight ?: number) : void {
117
- if (typeof pageHeight === 'number') {
118
- if (text == null) {
119
- throw new Error('ArgumentNullException:text');
120
- }
121
- if (font == null) {
122
- throw new Error('ArgumentNullException:font');
123
- }
124
- this.text = text;
125
- this.font = font;
126
- this.format = format;
127
- this.size = new SizeF(rectSize.width, rectSize.height);
128
- this.rectangle = <RectangleF>rectSize;
129
- this.pageHeight = pageHeight;
130
- this.reader = new StringTokenizer(text);
131
- } else {
132
- this.initialize(text, font, format, new RectangleF(new PointF(0, 0), <SizeF>rectSize), 0);
133
- }
134
- }
135
- /**
136
- * `Clear` all resources.
137
- * @private
138
- */
139
- private clear() : void {
140
- this.font = null;
141
- this.format = null;
142
- this.reader.close();
143
- this.reader = null;
144
- this.text = null;
145
- }
146
- /**
147
- * `Layouts` the text.
148
- * @private
149
- */
150
- private doLayout() : PdfStringLayoutResult {
151
- let result : PdfStringLayoutResult = new PdfStringLayoutResult();
152
- let lineResult : PdfStringLayoutResult = new PdfStringLayoutResult();
153
- let lines : LineInfo[] = [];
154
- let line : string = this.reader.peekLine();
155
- let lineIndent : number = this.getLineIndent(true);
156
- while (line != null) {
157
- lineResult = this.layoutLine(line, lineIndent);
158
- if (lineResult !== null || typeof lineResult !== 'undefined') {
159
- let numSymbolsInserted : number = 0;
160
- /* tslint:disable */
161
- let returnedValue : { success : boolean, numInserted : number } = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);
162
- /* tslint:enable */
163
- let success : boolean = returnedValue.success;
164
- numSymbolsInserted = returnedValue.numInserted;
165
- if (!success) {
166
- this.reader.read(numSymbolsInserted);
167
- break;
168
- }
169
- }
170
- // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {
171
- // break;
172
- // }
173
- this.reader.readLine();
174
- line = this.reader.peekLine();
175
- lineIndent = this.getLineIndent(false);
176
- }
177
- this.finalizeResult(result, lines);
178
- return result;
179
- }
180
- /**
181
- * Returns `line indent` for the line.
182
- * @private
183
- */
184
- private getLineIndent(firstLine : boolean) : number {
185
- let lineIndent : number = 0;
186
- if (this.format != null) {
187
- lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;
188
- lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;
189
- }
190
- return lineIndent;
191
- }
192
- /**
193
- * Calculates `height` of the line.
194
- * @private
195
- */
196
- private getLineHeight() : number {
197
- let height : number = this.font.height;
198
- if (this.format != null && this.format.lineSpacing !== 0) {
199
- height = this.format.lineSpacing + this.font.height;
200
- }
201
- return height;
202
- }
203
- /**
204
- * Calculates `width` of the line.
205
- * @private
206
- */
207
- private getLineWidth(line : string) : number {
208
- let width : number = this.font.getLineWidth(line, this.format);
209
- return width;
210
- }
211
- // tslint:disable
212
- /**
213
- * `Layouts` line.
214
- * @private
215
- */
216
- private layoutLine(line : string, lineIndent : number) : PdfStringLayoutResult {
217
- let lineResult : PdfStringLayoutResult = new PdfStringLayoutResult();
218
- lineResult.layoutLineHeight = this.getLineHeight();
219
- let lines : LineInfo[] = [];
220
- let maxWidth : number = this.size.width;
221
- let lineWidth : number = this.getLineWidth(line) + lineIndent;
222
- let lineType : LineType = LineType.FirstParagraphLine;
223
- let readWord : boolean = true;
224
- // line is in bounds.
225
- if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {
226
- this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);
227
- } else {
228
- let builder : string = '';
229
- let curLine : string = '';
230
- lineWidth = lineIndent;
231
- let curIndent : number = lineIndent;
232
- let reader : StringTokenizer = new StringTokenizer(line);
233
- let word : string = reader.peekWord();
234
- let isSingleWord : boolean = false;
235
- if (word.length !== reader.length) {
236
- if (word === ' ') {
237
- curLine = curLine + word;
238
- builder = builder + word;
239
- reader.position += 1;
240
- word = reader.peekWord();
241
- }
242
- }
243
- while (word != null) {
244
- curLine = curLine + word;
245
- let curLineWidth : number = /*Utils.Round(*/ this.getLineWidth(curLine.toString()) + curIndent /*)*/;
246
- if (curLine.toString() === ' ') {
247
- curLine = '';
248
- curLineWidth = 0;
249
- }
250
- if (curLineWidth > maxWidth) {
251
- if (this.getWrapType() === PdfWordWrapType.None) {
252
- break;
253
- }
254
- if (curLine.length === word.length) {
255
- // Character wrap is disabled or one symbol is greater than bounds.
256
- if (this.getWrapType() === PdfWordWrapType.WordOnly) {
257
- lineResult.textRemainder = line.substring(reader.position);
258
- break;
259
- } else if (curLine.length === 1) {
260
- builder = builder + word;
261
- break;
262
- } else {
263
- readWord = false;
264
- curLine = '';
265
- word = reader.peek().toString();
266
- continue;
267
- }
268
- } else {
269
- if (this.getLineWidth(word.toString()) > maxWidth) {
270
- this.format.wordWrap = PdfWordWrapType.Character;
271
- } else {
272
- if (typeof this.format !== 'undefined' && this.format !== null ) {
273
- this.format.wordWrap = PdfWordWrapType.Word;
274
- }
275
- }
276
- if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {
277
- let ln : string = builder.toString();
278
- // if (ln.indexOf(' ') === -1) {
279
- // isSingleWord = true;
280
- // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);
281
- // } else {
282
- // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);
283
- // }
284
- if (ln !== ' ') {
285
- this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);
286
- }
287
- if (this.isOverloadWithPosition) {
288
- maxWidth = this.clientSize.width;
289
- }
290
- curLine = '';
291
- builder = '';
292
- lineWidth = 0;
293
- curIndent = 0;
294
- curLineWidth = 0;
295
- lineType = LineType.None;
296
- // if (isSingleWord) {
297
- // reader.readWord();
298
- // readWord = false;
299
- // }
300
- word = (readWord) ? word : reader.peekWord();
301
- //isSingleWord = false;
302
- readWord = true;
303
- } else {
304
- readWord = false;
305
- curLine = '';
306
- curLine = curLine + builder.toString();
307
- word = reader.peek().toString();
308
- }
309
- continue;
310
- }
311
- }
312
- /*tslint:disable:max-func-body-length */
313
- builder = builder + word;
314
- lineWidth = curLineWidth;
315
- if (readWord) {
316
- reader.readWord();
317
- word = reader.peekWord();
318
- //isSingleWord = false;
319
- } else {
320
- reader.read();
321
- word = reader.peek().toString();
322
- }
323
- }
324
- if (builder.length > 0) {
325
- let ln : string = builder.toString();
326
- this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);
327
- }
328
- reader.close();
329
- }
330
- lineResult.layoutLines = [];
331
- for (let index : number = 0; index < lines.length; index++) {
332
- lineResult.layoutLines.push(lines[index]);
333
- }
334
- lines = [];
335
- return lineResult;
336
- }
337
- /**
338
- * `Adds` line to line result.
339
- * @private
340
- */
341
- private addToLineResult(lineResult : PdfStringLayoutResult, lines : LineInfo[], line : string,
342
- lineWidth : number, breakType : LineType) : void {
343
- let info : LineInfo = new LineInfo();
344
- info.text = line;
345
- info.width = lineWidth;
346
- info.lineType = breakType;
347
- lines.push(info);
348
- let size : SizeF = lineResult.actualSize;
349
- size.height += this.getLineHeight();
350
- size.width = Math.max(size.width, lineWidth);
351
- lineResult.size = size;
352
- }
353
- /**
354
- * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.
355
- * @private
356
- */
357
- private copyToResult(result : PdfStringLayoutResult, lineResult : PdfStringLayoutResult, lines : LineInfo[],
358
- /*out*/ numInserted : number) : { success : boolean, numInserted : number } {
359
- let success : boolean = true;
360
- let allowPartialLines : boolean = (this.format != null && !this.format.lineLimit);
361
- let height : number = result.actualSize.height;
362
- let maxHeight : number = this.size.height;
363
- if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {
364
- maxHeight = this.rectangle.y - this.pageHeight;
365
- maxHeight = Math.max(maxHeight, -maxHeight);
366
- }
367
- numInserted = 0;
368
- if (lineResult.lines != null) {
369
- for (let i : number = 0, len : number = lineResult.lines.length; i < len; i++) {
370
- let expHeight : number = height + lineResult.lineHeight;
371
- if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines)
372
- {
373
- let info : LineInfo = lineResult.lines[i];
374
- numInserted += info.text.length;
375
- info = this.trimLine(info, (lines.length === 0));
376
- lines.push(info);
377
- // Update width.
378
- let size : SizeF = result.actualSize;
379
- size.width = Math.max(size.width, info.width);
380
- result.size = size;
381
- // The part of the line fits only and it's allowed to use partial lines.
382
- // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)
383
- // {
384
- // let shouldClip : boolean = (this.format == null || !this.format.noClip);
385
-
386
- // if (shouldClip)
387
- // {
388
- // let exceededHeight : number = expHeight - maxHeight;
389
- // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;
390
- // height = /*Utils.Round(*/ height + fitHeight /*)*/;
391
- // }
392
- // else
393
- // {
394
- // height = expHeight;
395
- // }
396
-
397
- // success = false;
398
- // break;
399
- // } else {
400
- height = expHeight;
401
- // }
402
- }
403
- else
404
- {
405
- success = false;
406
- break;
407
- }
408
- }
409
- }
410
- if (height != result.size.height)
411
- {
412
- let size1 : SizeF= result.actualSize;
413
- size1.height = height;
414
- result.size = size1;
415
- }
416
- return {success : success, numInserted : numInserted};
417
- }
418
- /**
419
- * `Finalizes` final result.
420
- * @private
421
- */
422
- private finalizeResult(result : PdfStringLayoutResult, lines : LineInfo[]) : void {
423
- result.layoutLines = [];
424
- for (let index : number = 0; index < lines.length ; index++) {
425
- result.layoutLines.push(lines[index]);
426
- }
427
- result.layoutLineHeight = this.getLineHeight();
428
- if (!this.reader.end)
429
- {
430
- result.textRemainder = this.reader.readToEnd();
431
- }
432
- lines = [];
433
- }
434
- /**
435
- * `Trims` whitespaces at the line.
436
- * @private
437
- */
438
- private trimLine(info : LineInfo, firstLine : boolean) : LineInfo {
439
- let line : string = info.text;
440
- let lineWidth : number = info.width;
441
- // Trim start whitespaces if the line is not a start of the paragraph only.
442
- let trimStartSpaces : boolean = ((info.lineType & LineType.FirstParagraphLine) === 0);
443
- let start : boolean = (this.format == null || !this.format.rightToLeft);
444
- let spaces : string[] = StringTokenizer.spaces;
445
- line = (start) ? line.trim() : line.trim();
446
- // Recalculate line width.
447
- if (line.length !== info.text.length) {
448
- lineWidth = this.getLineWidth(line);
449
- if ((info.lineType & LineType.FirstParagraphLine) > 0) {
450
- lineWidth += this.getLineIndent(firstLine);
451
- }
452
- }
453
- info.text = line;
454
- info.width = lineWidth;
455
- return info;
456
- }
457
- /**
458
- * Returns `wrap` type.
459
- * @private
460
- */
461
- private getWrapType() : PdfWordWrapType {
462
- let wrapType : PdfWordWrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;
463
- return wrapType;
464
- }
465
- }
466
- //Internal declaration
467
- export class PdfStringLayoutResult {
468
- //Fields
469
- /**
470
- * Layout `lines`.
471
- * @private
472
- */
473
- public layoutLines : LineInfo[];
474
- /**
475
- * The `text` wasn`t lay outed.
476
- * @private
477
- */
478
- public textRemainder : string;
479
- /**
480
- * Actual layout text `bounds`.
481
- * @private
482
- */
483
- public size : SizeF;
484
- /**
485
- * `Height` of the line.
486
- * @private
487
- */
488
- public layoutLineHeight : number;
489
- // Properties
490
- /**
491
- * Gets the `text` which is not lay outed.
492
- * @private
493
- */
494
- public get remainder() : string {
495
- return this.textRemainder;
496
- }
497
- /**
498
- * Gets the actual layout text `bounds`.
499
- * @private
500
- */
501
- public get actualSize() : SizeF {
502
- if ( typeof this.size === 'undefined' ) {
503
- this.size = new SizeF(0, 0);
504
- }
505
- return this.size;
506
- }
507
- /**
508
- * Gets layout `lines` information.
509
- * @private
510
- */
511
- public get lines() : LineInfo[] {
512
- return this.layoutLines;
513
- }
514
- /**
515
- * Gets the `height` of the line.
516
- * @private
517
- */
518
- public get lineHeight() : number {
519
- return this.layoutLineHeight;
520
- }
521
- /**
522
- * Gets value that indicates whether any layout text [`empty`].
523
- * @private
524
- */
525
- public get empty() : boolean {
526
- return (this.layoutLines == null || this.layoutLines.length === 0);
527
- }
528
- /**
529
- * Gets `number of` the layout lines.
530
- * @private
531
- */
532
- public get lineCount() : number {
533
- let count : number = (!this.empty) ? this.layoutLines.length : 0;
534
- return count;
535
- }
536
- }
537
- export class LineInfo {
538
- //Fields
539
- /**
540
- * Line `text`.
541
- * @private
542
- */
543
- public content : string;
544
- /**
545
- * `Width` of the text.
546
- * @private
547
- */
548
- public lineWidth : number;
549
- /**
550
- * `Breaking type` of the line.
551
- * @private
552
- */
553
- public type : LineType;
554
-
555
- //Properties
556
- /**
557
- * Gets the `type` of the line text.
558
- * @private
559
- */
560
- public get lineType() : LineType {
561
- return this.type;
562
- }
563
- public set lineType(value : LineType) {
564
- this.type = value;
565
- }
566
- /**
567
- * Gets the line `text`.
568
- * @private
569
- */
570
- public get text() : string {
571
- return this.content;
572
- }
573
- public set text(value : string) {
574
- this.content = value;
575
- }
576
- /**
577
- * Gets `width` of the line text.
578
- * @private
579
- */
580
- public get width() : number {
581
- return this.lineWidth;
582
- }
583
- public set width(value : number) {
584
- this.lineWidth = value;
585
- }
586
- }
587
- /**
588
- * Break type of the `line`.
589
- * @private
590
- */
591
- export enum LineType {
592
- /**
593
- * Specifies the type of `None`.
594
- * @private
595
- */
596
- None = 0,
597
- /**
598
- * Specifies the type of `NewLineBreak`.
599
- * @private
600
- */
601
- NewLineBreak = 0x0001,
602
- /**
603
- * Specifies the type of `LayoutBreak`.
604
- * @private
605
- */
606
- LayoutBreak = 0x0002,
607
- /**
608
- * Specifies the type of `FirstParagraphLine`.
609
- * @private
610
- */
611
- FirstParagraphLine = 0x0004,
612
- /**
613
- * Specifies the type of `LastParagraphLine`.
614
- * @private
615
- */
616
- LastParagraphLine = 0x0008
617
- }