@syncfusion/ej2-pdf-export 23.2.4 → 24.1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -18
- package/dist/ej2-pdf-export.min.js +2 -2
- package/dist/ej2-pdf-export.umd.min.js +2 -2
- package/dist/ej2-pdf-export.umd.min.js.map +1 -1
- package/dist/es6/ej2-pdf-export.es2015.js +6 -1
- package/dist/es6/ej2-pdf-export.es2015.js.map +1 -1
- package/dist/es6/ej2-pdf-export.es5.js +6 -1
- package/dist/es6/ej2-pdf-export.es5.js.map +1 -1
- package/dist/global/ej2-pdf-export.min.js +2 -2
- package/dist/global/ej2-pdf-export.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/dist/ts/implementation/actions/action.ts +76 -0
- package/dist/ts/implementation/actions/uri-action.ts +52 -0
- package/dist/ts/implementation/annotations/action-link-annotation.ts +43 -0
- package/dist/ts/implementation/annotations/annotation-collection.ts +159 -0
- package/dist/ts/implementation/annotations/annotation.ts +241 -0
- package/dist/ts/implementation/annotations/document-link-annotation.ts +118 -0
- package/dist/ts/implementation/annotations/link-annotation.ts +32 -0
- package/dist/ts/implementation/annotations/pdf-text-web-link.ts +265 -0
- package/dist/ts/implementation/annotations/uri-annotation.ts +86 -0
- package/dist/ts/implementation/collections/dictionary.ts +150 -0
- package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +125 -0
- package/dist/ts/implementation/collections/utils.ts +38 -0
- package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +39 -0
- package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +108 -0
- package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +127 -0
- package/dist/ts/implementation/document/automatic-fields/composite-field.ts +76 -0
- package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +37 -0
- package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +75 -0
- package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +157 -0
- package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +82 -0
- package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +60 -0
- package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +48 -0
- package/dist/ts/implementation/document/pdf-catalog.ts +65 -0
- package/dist/ts/implementation/document/pdf-document-base.ts +180 -0
- package/dist/ts/implementation/document/pdf-document-template.ts +310 -0
- package/dist/ts/implementation/document/pdf-document.ts +342 -0
- package/dist/ts/implementation/document/pdf-viewer-preferences.ts +578 -0
- package/dist/ts/implementation/drawing/pdf-drawing.ts +218 -0
- package/dist/ts/implementation/general/enum.ts +21 -0
- package/dist/ts/implementation/general/functions/pdf-function.ts +66 -0
- package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +63 -0
- package/dist/ts/implementation/general/pdf-cache-collection.ts +97 -0
- package/dist/ts/implementation/general/pdf-collection.ts +41 -0
- package/dist/ts/implementation/general/pdf-destination.ts +170 -0
- package/dist/ts/implementation/graphics/brushes/enum.ts +237 -0
- package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +294 -0
- package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +68 -0
- package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +2438 -0
- package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +295 -0
- package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +311 -0
- package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +406 -0
- package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +290 -0
- package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +107 -0
- package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +304 -0
- package/dist/ts/implementation/graphics/constants.ts +31 -0
- package/dist/ts/implementation/graphics/enum.ts +413 -0
- package/dist/ts/implementation/graphics/figures/arc.ts +133 -0
- package/dist/ts/implementation/graphics/figures/base/draw-element.ts +59 -0
- package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +260 -0
- package/dist/ts/implementation/graphics/figures/base/fill-element.ts +72 -0
- package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +34 -0
- package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +69 -0
- package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +276 -0
- package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +205 -0
- package/dist/ts/implementation/graphics/figures/ellipse-part.ts +76 -0
- package/dist/ts/implementation/graphics/figures/enum.ts +80 -0
- package/dist/ts/implementation/graphics/figures/layout-element.ts +132 -0
- package/dist/ts/implementation/graphics/figures/path.ts +646 -0
- package/dist/ts/implementation/graphics/figures/pdf-template.ts +205 -0
- package/dist/ts/implementation/graphics/figures/rectangle-area.ts +108 -0
- package/dist/ts/implementation/graphics/figures/text-element.ts +445 -0
- package/dist/ts/implementation/graphics/fonts/enum.ts +385 -0
- package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +248 -0
- package/dist/ts/implementation/graphics/fonts/pdf-font.ts +316 -0
- package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +606 -0
- package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +243 -0
- package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +474 -0
- package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +165 -0
- package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +958 -0
- package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +374 -0
- package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +255 -0
- package/dist/ts/implementation/graphics/fonts/string-layouter.ts +617 -0
- package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +275 -0
- package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +206 -0
- package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +18 -0
- package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +18 -0
- package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +14 -0
- package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +26 -0
- package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +35 -0
- package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +94 -0
- package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +56 -0
- package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +10 -0
- package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +14 -0
- package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +106 -0
- package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +58 -0
- package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +33 -0
- package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +22 -0
- package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +42 -0
- package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +1254 -0
- package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +26 -0
- package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +26 -0
- package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +577 -0
- package/dist/ts/implementation/graphics/images/byte-array.ts +137 -0
- package/dist/ts/implementation/graphics/images/image-decoder.ts +439 -0
- package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +110 -0
- package/dist/ts/implementation/graphics/images/pdf-image.ts +132 -0
- package/dist/ts/implementation/graphics/pdf-color.ts +478 -0
- package/dist/ts/implementation/graphics/pdf-graphics.ts +2429 -0
- package/dist/ts/implementation/graphics/pdf-margins.ts +124 -0
- package/dist/ts/implementation/graphics/pdf-pen.ts +370 -0
- package/dist/ts/implementation/graphics/pdf-resources.ts +300 -0
- package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +246 -0
- package/dist/ts/implementation/graphics/pdf-transparency.ts +93 -0
- package/dist/ts/implementation/graphics/unit-convertor.ts +96 -0
- package/dist/ts/implementation/input-output/big-endian-writer.ts +121 -0
- package/dist/ts/implementation/input-output/cross-table.ts +21 -0
- package/dist/ts/implementation/input-output/enum.ts +16 -0
- package/dist/ts/implementation/input-output/pdf-cross-table.ts +524 -0
- package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +571 -0
- package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +194 -0
- package/dist/ts/implementation/input-output/pdf-operators.ts +363 -0
- package/dist/ts/implementation/input-output/pdf-stream-writer.ts +681 -0
- package/dist/ts/implementation/input-output/pdf-writer.ts +88 -0
- package/dist/ts/implementation/pages/enum.ts +201 -0
- package/dist/ts/implementation/pages/page-added-event-arguments.ts +39 -0
- package/dist/ts/implementation/pages/pdf-document-page-collection.ts +180 -0
- package/dist/ts/implementation/pages/pdf-page-base.ts +181 -0
- package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +348 -0
- package/dist/ts/implementation/pages/pdf-page-layer.ts +271 -0
- package/dist/ts/implementation/pages/pdf-page-settings.ts +192 -0
- package/dist/ts/implementation/pages/pdf-page-size.ts +162 -0
- package/dist/ts/implementation/pages/pdf-page-template-element.ts +663 -0
- package/dist/ts/implementation/pages/pdf-page.ts +235 -0
- package/dist/ts/implementation/pages/pdf-section-collection.ts +187 -0
- package/dist/ts/implementation/pages/pdf-section-page-collection.ts +61 -0
- package/dist/ts/implementation/pages/pdf-section-templates.ts +96 -0
- package/dist/ts/implementation/pages/pdf-section.ts +644 -0
- package/dist/ts/implementation/primitives/pdf-array.ts +386 -0
- package/dist/ts/implementation/primitives/pdf-boolean.ts +119 -0
- package/dist/ts/implementation/primitives/pdf-dictionary.ts +513 -0
- package/dist/ts/implementation/primitives/pdf-name.ts +218 -0
- package/dist/ts/implementation/primitives/pdf-number.ts +165 -0
- package/dist/ts/implementation/primitives/pdf-reference.ts +430 -0
- package/dist/ts/implementation/primitives/pdf-stream.ts +306 -0
- package/dist/ts/implementation/primitives/pdf-string.ts +397 -0
- package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +2027 -0
- package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +1193 -0
- package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +206 -0
- package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +470 -0
- package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +853 -0
- package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +240 -0
- package/dist/ts/implementation/structured-elements/grid/styles/style.ts +424 -0
- package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +16 -0
- package/dist/ts/interfaces/i-pdf-cache.ts +23 -0
- package/dist/ts/interfaces/i-pdf-changable.ts +17 -0
- package/dist/ts/interfaces/i-pdf-clonable.ts +12 -0
- package/dist/ts/interfaces/i-pdf-primitives.ts +45 -0
- package/dist/ts/interfaces/i-pdf-true-type-font.ts +48 -0
- package/dist/ts/interfaces/i-pdf-wrapper.ts +13 -0
- package/dist/ts/interfaces/i-pdf-writer.ts +29 -0
- package/package.json +7 -7
- package/src/implementation/document/pdf-document-base.js +1 -2
- package/src/implementation/graphics/pdf-graphics.js +7 -2
- package/src/implementation/graphics/pdf-transformation-matrix.d.ts +1 -1
|
@@ -0,0 +1,681 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PdfStreamWriter.ts class for EJ2-PDF
|
|
3
|
+
*/
|
|
4
|
+
import { IPdfWriter } from './../../interfaces/i-pdf-writer';
|
|
5
|
+
import { PdfStream } from './../primitives/pdf-stream';
|
|
6
|
+
import { Operators } from './pdf-operators';
|
|
7
|
+
import { PdfNumber } from './../primitives/pdf-number';
|
|
8
|
+
import { PointF, RectangleF } from './../drawing/pdf-drawing';
|
|
9
|
+
import { TextRenderingMode, PdfLineCap, PdfLineJoin, PdfColorSpace } from './../graphics/enum';
|
|
10
|
+
import { PdfString } from './../primitives/pdf-string';
|
|
11
|
+
import { PdfName } from './../primitives/pdf-name';
|
|
12
|
+
import { PdfFont } from './../graphics/fonts/pdf-font';
|
|
13
|
+
import { PdfTransformationMatrix } from './../graphics/pdf-transformation-matrix';
|
|
14
|
+
import { PdfColor } from './../graphics/pdf-color';
|
|
15
|
+
import { PdfArray } from './../primitives/pdf-array';
|
|
16
|
+
import { PdfDocument } from './../document/pdf-document';
|
|
17
|
+
/**
|
|
18
|
+
* Helper class to `write PDF graphic streams` easily.
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
export class PdfStreamWriter implements IPdfWriter {
|
|
22
|
+
//Fields
|
|
23
|
+
/**
|
|
24
|
+
* The PDF `stream` where the data should be write into.
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
private stream : PdfStream;
|
|
28
|
+
/**
|
|
29
|
+
* Initialize an instance of `PdfStreamWriter` class.
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
32
|
+
public constructor(stream : PdfStream) {
|
|
33
|
+
if (stream == null) {
|
|
34
|
+
throw new Error('ArgumentNullException:stream');
|
|
35
|
+
}
|
|
36
|
+
this.stream = stream;
|
|
37
|
+
}
|
|
38
|
+
//Implementation
|
|
39
|
+
/**
|
|
40
|
+
* `Clear` the stream.
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
public clear() : void {
|
|
44
|
+
this.stream.clearStream();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Sets the `graphics state`.
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
public setGraphicsState(dictionaryName : PdfName) : void
|
|
51
|
+
/**
|
|
52
|
+
* Sets the `graphics state`.
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
55
|
+
public setGraphicsState(dictionaryName : string) : void
|
|
56
|
+
public setGraphicsState(dictionaryName : PdfName|string) : void {
|
|
57
|
+
if (dictionaryName instanceof PdfName) {
|
|
58
|
+
this.stream.write(dictionaryName.toString());
|
|
59
|
+
this.stream.write(Operators.whiteSpace);
|
|
60
|
+
this.writeOperator(Operators.setGraphicsState);
|
|
61
|
+
} else {
|
|
62
|
+
this.stream.write(Operators.slash);
|
|
63
|
+
this.stream.write(dictionaryName);
|
|
64
|
+
this.stream.write(Operators.whiteSpace);
|
|
65
|
+
this.writeOperator(Operators.setGraphicsState);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* `Executes the XObject`.
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
public executeObject(name : PdfName) : void {
|
|
73
|
+
this.stream.write(name.toString());
|
|
74
|
+
this.stream.write(Operators.whiteSpace);
|
|
75
|
+
this.writeOperator(Operators.paintXObject);
|
|
76
|
+
this.stream.write(Operators.newLine);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* `Closes path object`.
|
|
80
|
+
* @private
|
|
81
|
+
*/
|
|
82
|
+
public closePath() : void {
|
|
83
|
+
this.writeOperator(Operators.closePath);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* `Clips the path`.
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
public clipPath(useEvenOddRule : boolean) : void {
|
|
90
|
+
this.stream.write(Operators.clipPath);
|
|
91
|
+
if (useEvenOddRule) {
|
|
92
|
+
this.stream.write(Operators.evenOdd);
|
|
93
|
+
}
|
|
94
|
+
this.stream.write(Operators.whiteSpace);
|
|
95
|
+
this.stream.write(Operators.endPath);
|
|
96
|
+
this.stream.write(Operators.newLine);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* `Closes, then fills and strokes the path`.
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
public closeFillStrokePath(useEvenOddRule : boolean) : void {
|
|
103
|
+
this.stream.write(Operators.closeFillStrokePath);
|
|
104
|
+
if (useEvenOddRule) {
|
|
105
|
+
this.stream.write(Operators.evenOdd);
|
|
106
|
+
this.stream.write(Operators.newLine);
|
|
107
|
+
} else {
|
|
108
|
+
this.stream.write(Operators.newLine);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* `Fills and strokes path`.
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
115
|
+
public fillStrokePath(useEvenOddRule : boolean) : void {
|
|
116
|
+
this.stream.write(Operators.fillStroke);
|
|
117
|
+
if (useEvenOddRule) {
|
|
118
|
+
this.stream.write(Operators.evenOdd);
|
|
119
|
+
this.stream.write(Operators.newLine);
|
|
120
|
+
} else {
|
|
121
|
+
this.stream.write(Operators.newLine);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* `Fills path`.
|
|
126
|
+
* @private
|
|
127
|
+
*/
|
|
128
|
+
public fillPath(useEvenOddRule : boolean) : void {
|
|
129
|
+
this.stream.write(Operators.fill);
|
|
130
|
+
if (useEvenOddRule) {
|
|
131
|
+
this.stream.write(Operators.evenOdd);
|
|
132
|
+
this.stream.write(Operators.newLine);
|
|
133
|
+
} else {
|
|
134
|
+
this.stream.write(Operators.newLine);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* `Ends the path`.
|
|
139
|
+
* @private
|
|
140
|
+
*/
|
|
141
|
+
public endPath() : void {
|
|
142
|
+
this.writeOperator(Operators.n);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* `Closes and fills the path`.
|
|
146
|
+
* @private
|
|
147
|
+
*/
|
|
148
|
+
public closeFillPath(useEvenOddRule : boolean) : void {
|
|
149
|
+
this.writeOperator(Operators.closePath);
|
|
150
|
+
this.stream.write(Operators.fill);
|
|
151
|
+
if (useEvenOddRule) {
|
|
152
|
+
this.stream.write(Operators.evenOdd);
|
|
153
|
+
this.stream.write(Operators.newLine);
|
|
154
|
+
} else {
|
|
155
|
+
this.stream.write(Operators.newLine);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* `Closes and strokes the path`.
|
|
160
|
+
* @private
|
|
161
|
+
*/
|
|
162
|
+
public closeStrokePath() : void {
|
|
163
|
+
this.writeOperator(Operators.closeStrokePath);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* `Sets the text scaling`.
|
|
167
|
+
* @private
|
|
168
|
+
*/
|
|
169
|
+
public setTextScaling(textScaling : number) : void {
|
|
170
|
+
this.stream.write(PdfNumber.floatToString(textScaling));
|
|
171
|
+
this.stream.write(Operators.whiteSpace);
|
|
172
|
+
this.writeOperator(Operators.setTextScaling);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* `Strokes path`.
|
|
176
|
+
* @private
|
|
177
|
+
*/
|
|
178
|
+
public strokePath() : void {
|
|
179
|
+
this.writeOperator(Operators.stroke);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* `Restores` the graphics state.
|
|
183
|
+
* @private
|
|
184
|
+
*/
|
|
185
|
+
public restoreGraphicsState() : void {
|
|
186
|
+
this.writeOperator(Operators.restoreState);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* `Saves` the graphics state.
|
|
190
|
+
* @private
|
|
191
|
+
*/
|
|
192
|
+
public saveGraphicsState() : void {
|
|
193
|
+
this.writeOperator(Operators.saveState);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* `Shifts the text to the point`.
|
|
197
|
+
* @private
|
|
198
|
+
*/
|
|
199
|
+
public startNextLine() : void
|
|
200
|
+
/**
|
|
201
|
+
* `Shifts the text to the point`.
|
|
202
|
+
* @private
|
|
203
|
+
*/
|
|
204
|
+
public startNextLine(point : PointF) : void
|
|
205
|
+
/**
|
|
206
|
+
* `Shifts the text to the point`.
|
|
207
|
+
* @private
|
|
208
|
+
*/
|
|
209
|
+
public startNextLine(x : number, y : number) : void
|
|
210
|
+
public startNextLine(arg1 ?: PointF | number, arg2 ?: number) : void {
|
|
211
|
+
if (typeof arg1 === 'undefined') {
|
|
212
|
+
this.writeOperator(Operators.goToNextLine);
|
|
213
|
+
} else if (arg1 instanceof PointF) {
|
|
214
|
+
this.writePoint(arg1);
|
|
215
|
+
this.writeOperator(Operators.setCoords);
|
|
216
|
+
} else {
|
|
217
|
+
this.writePoint(arg1, arg2);
|
|
218
|
+
this.writeOperator(Operators.setCoords);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Shows the `text`.
|
|
223
|
+
* @private
|
|
224
|
+
*/
|
|
225
|
+
public showText(text : PdfString) : void {
|
|
226
|
+
this.checkTextParam(text);
|
|
227
|
+
this.writeText(text);
|
|
228
|
+
this.writeOperator(Operators.setText);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Sets `text leading`.
|
|
232
|
+
* @private
|
|
233
|
+
*/
|
|
234
|
+
public setLeading(leading : number) : void {
|
|
235
|
+
this.stream.write(PdfNumber.floatToString(leading));
|
|
236
|
+
this.stream.write(Operators.whiteSpace);
|
|
237
|
+
this.writeOperator(Operators.setTextLeading);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* `Begins the path`.
|
|
241
|
+
* @private
|
|
242
|
+
*/
|
|
243
|
+
public beginPath(x : number, y : number) : void {
|
|
244
|
+
this.writePoint(x, y);
|
|
245
|
+
this.writeOperator(Operators.beginPath);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* `Begins text`.
|
|
249
|
+
* @private
|
|
250
|
+
*/
|
|
251
|
+
public beginText() : void {
|
|
252
|
+
this.writeOperator(Operators.beginText);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* `Ends text`.
|
|
256
|
+
* @private
|
|
257
|
+
*/
|
|
258
|
+
public endText() : void {
|
|
259
|
+
this.writeOperator(Operators.endText);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* `Appends the rectangle`.
|
|
263
|
+
* @private
|
|
264
|
+
*/
|
|
265
|
+
public appendRectangle(rectangle : RectangleF) : void
|
|
266
|
+
/**
|
|
267
|
+
* `Appends the rectangle`.
|
|
268
|
+
* @private
|
|
269
|
+
*/
|
|
270
|
+
public appendRectangle(x : number, y : number, width : number, height : number) : void
|
|
271
|
+
public appendRectangle(arg1 : number|RectangleF, arg2 ?: number, arg3 ?: number, arg4 ?: number) : void {
|
|
272
|
+
if (arg1 instanceof RectangleF) {
|
|
273
|
+
this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);
|
|
274
|
+
} else {
|
|
275
|
+
this.writePoint(arg1 as number, arg2);
|
|
276
|
+
this.writePoint(arg3, arg4);
|
|
277
|
+
this.writeOperator(Operators.appendRectangle);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* `Appends a line segment`.
|
|
282
|
+
* @private
|
|
283
|
+
*/
|
|
284
|
+
public appendLineSegment(point : PointF) : void
|
|
285
|
+
/**
|
|
286
|
+
* `Appends a line segment`.
|
|
287
|
+
* @private
|
|
288
|
+
*/
|
|
289
|
+
public appendLineSegment(x : number, y : number) : void
|
|
290
|
+
public appendLineSegment(arg1 : number | PointF, arg2 ?: number) : void {
|
|
291
|
+
if (arg1 instanceof PointF) {
|
|
292
|
+
this.appendLineSegment(arg1.x, arg1.y);
|
|
293
|
+
} else {
|
|
294
|
+
this.writePoint(arg1, arg2);
|
|
295
|
+
this.writeOperator(Operators.appendLineSegment);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Sets the `text rendering mode`.
|
|
300
|
+
* @private
|
|
301
|
+
*/
|
|
302
|
+
public setTextRenderingMode(renderingMode : TextRenderingMode) : void {
|
|
303
|
+
this.stream.write((<number>renderingMode).toString());
|
|
304
|
+
this.stream.write(Operators.whiteSpace);
|
|
305
|
+
this.writeOperator(Operators.setRenderingMode);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Sets the `character spacing`.
|
|
309
|
+
* @private
|
|
310
|
+
*/
|
|
311
|
+
public setCharacterSpacing(charSpacing : number) : void {
|
|
312
|
+
this.stream.write(PdfNumber.floatToString(charSpacing));
|
|
313
|
+
this.stream.write(Operators.whiteSpace);
|
|
314
|
+
this.stream.write(Operators.setCharacterSpace);
|
|
315
|
+
this.stream.write(Operators.newLine);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Sets the `word spacing`.
|
|
319
|
+
* @private
|
|
320
|
+
*/
|
|
321
|
+
public setWordSpacing(wordSpacing : number) : void {
|
|
322
|
+
this.stream.write(PdfNumber.floatToString(wordSpacing));
|
|
323
|
+
this.stream.write(Operators.whiteSpace);
|
|
324
|
+
this.writeOperator(Operators.setWordSpace);
|
|
325
|
+
}
|
|
326
|
+
// public showNextLineText(text : number[], hex : boolean) : void
|
|
327
|
+
/**
|
|
328
|
+
* Shows the `next line text`.
|
|
329
|
+
* @private
|
|
330
|
+
*/
|
|
331
|
+
public showNextLineText(text : string, hex : boolean) : void
|
|
332
|
+
/**
|
|
333
|
+
* Shows the `next line text`.
|
|
334
|
+
* @private
|
|
335
|
+
*/
|
|
336
|
+
public showNextLineText(text : PdfString) : void
|
|
337
|
+
public showNextLineText(arg1 ?: PdfString|string , arg2 ?: boolean) : void {
|
|
338
|
+
if (arg1 instanceof PdfString) {
|
|
339
|
+
this.checkTextParam(arg1);
|
|
340
|
+
this.writeText(arg1);
|
|
341
|
+
this.writeOperator(Operators.setTextOnNewLine);
|
|
342
|
+
} else {
|
|
343
|
+
this.checkTextParam(arg1);
|
|
344
|
+
this.writeText(arg1, arg2);
|
|
345
|
+
this.writeOperator(Operators.setTextOnNewLine);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Set the `color space`.
|
|
350
|
+
* @private
|
|
351
|
+
*/
|
|
352
|
+
public setColorSpace(name : string, forStroking : boolean) : void
|
|
353
|
+
/**
|
|
354
|
+
* Set the `color space`.
|
|
355
|
+
* @private
|
|
356
|
+
*/
|
|
357
|
+
public setColorSpace(name : PdfName, forStroking : boolean) : void
|
|
358
|
+
public setColorSpace(arg1 : PdfName|string, arg2 : boolean|PdfName) : void {
|
|
359
|
+
if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {
|
|
360
|
+
let temparg1 : PdfName = arg1 as PdfName;
|
|
361
|
+
let temparg2 : boolean = arg2 as boolean;
|
|
362
|
+
// if (temparg1 == null) {
|
|
363
|
+
// throw new Error('ArgumentNullException:name');
|
|
364
|
+
// }
|
|
365
|
+
let op : string = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;
|
|
366
|
+
this.stream.write(temparg1.toString());
|
|
367
|
+
this.stream.write(Operators.whiteSpace);
|
|
368
|
+
this.stream.write(op);
|
|
369
|
+
this.stream.write(Operators.newLine);
|
|
370
|
+
} else {
|
|
371
|
+
let temparg1 : string = arg1 as string;
|
|
372
|
+
let temparg2 : boolean = arg2 as boolean;
|
|
373
|
+
this.setColorSpace(new PdfName(temparg1), temparg2);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Modifies current `transformation matrix`.
|
|
378
|
+
* @private
|
|
379
|
+
*/
|
|
380
|
+
public modifyCtm(matrix : PdfTransformationMatrix) : void {
|
|
381
|
+
if (matrix == null) {
|
|
382
|
+
throw new Error('ArgumentNullException:matrix');
|
|
383
|
+
}
|
|
384
|
+
this.stream.write(matrix.toString());
|
|
385
|
+
this.stream.write(Operators.whiteSpace);
|
|
386
|
+
this.writeOperator(Operators.modifyCtm);
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Sets `font`.
|
|
390
|
+
* @private
|
|
391
|
+
*/
|
|
392
|
+
public setFont(font : PdfFont, name : string, size : number) : void
|
|
393
|
+
/**
|
|
394
|
+
* Sets `font`.
|
|
395
|
+
* @private
|
|
396
|
+
*/
|
|
397
|
+
public setFont(font : PdfFont, name : PdfName, size : number) : void
|
|
398
|
+
public setFont(font : PdfFont, name : PdfName|string, size : number) : void {
|
|
399
|
+
if (typeof name === 'string') {
|
|
400
|
+
this.setFont(font, new PdfName(name), size);
|
|
401
|
+
} else {
|
|
402
|
+
if (font == null) {
|
|
403
|
+
throw new Error('ArgumentNullException:font');
|
|
404
|
+
}
|
|
405
|
+
this.stream.write(name.toString());
|
|
406
|
+
this.stream.write(Operators.whiteSpace);
|
|
407
|
+
this.stream.write(PdfNumber.floatToString(size));
|
|
408
|
+
this.stream.write(Operators.whiteSpace);
|
|
409
|
+
this.writeOperator(Operators.setFont);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* `Writes the operator`.
|
|
414
|
+
* @private
|
|
415
|
+
*/
|
|
416
|
+
private writeOperator(opcode : string) : void {
|
|
417
|
+
this.stream.write(opcode);
|
|
418
|
+
this.stream.write(Operators.newLine);
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Checks the `text param`.
|
|
422
|
+
* @private
|
|
423
|
+
*/
|
|
424
|
+
private checkTextParam(text : string) : void
|
|
425
|
+
/**
|
|
426
|
+
* Checks the `text param`.
|
|
427
|
+
* @private
|
|
428
|
+
*/
|
|
429
|
+
private checkTextParam(text : PdfString) : void
|
|
430
|
+
private checkTextParam(text : PdfString|string) : void {
|
|
431
|
+
if (text == null) {
|
|
432
|
+
throw new Error('ArgumentNullException:text');
|
|
433
|
+
}
|
|
434
|
+
if (typeof text === 'string' && text === '') {
|
|
435
|
+
throw new Error('ArgumentException:The text can not be an empty string, text');
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* `Writes the text`.
|
|
440
|
+
* @private
|
|
441
|
+
*/
|
|
442
|
+
private writeText(text : string, hex : boolean) : void
|
|
443
|
+
/**
|
|
444
|
+
* `Writes the text`.
|
|
445
|
+
* @private
|
|
446
|
+
*/
|
|
447
|
+
private writeText(text : PdfString) : void
|
|
448
|
+
private writeText(arg1 : PdfString|string, arg2 ?: boolean) : void {
|
|
449
|
+
if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {
|
|
450
|
+
this.stream.write(arg1.pdfEncode());
|
|
451
|
+
} else {
|
|
452
|
+
let start : string;
|
|
453
|
+
let end : string;
|
|
454
|
+
if (arg2) {
|
|
455
|
+
start = PdfString.hexStringMark[0];
|
|
456
|
+
end = PdfString.hexStringMark[1];
|
|
457
|
+
} else {
|
|
458
|
+
start = PdfString.stringMark[0];
|
|
459
|
+
end = PdfString.stringMark[1];
|
|
460
|
+
}
|
|
461
|
+
this.stream.write(start);
|
|
462
|
+
this.stream.write(arg1 as string);
|
|
463
|
+
this.stream.write(end);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* `Writes the point`.
|
|
468
|
+
* @private
|
|
469
|
+
*/
|
|
470
|
+
private writePoint(point : PointF) : void
|
|
471
|
+
/**
|
|
472
|
+
* `Writes the point`.
|
|
473
|
+
* @private
|
|
474
|
+
*/
|
|
475
|
+
private writePoint(x : number, y : number) : void
|
|
476
|
+
private writePoint(arg1 : number|PointF, arg2 ?: number) : void {
|
|
477
|
+
if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {
|
|
478
|
+
this.writePoint(arg1.x, arg1.y);
|
|
479
|
+
} else {
|
|
480
|
+
let temparg1 : number = arg1 as number;
|
|
481
|
+
this.stream.write(PdfNumber.floatToString(temparg1));
|
|
482
|
+
this.stream.write(Operators.whiteSpace);
|
|
483
|
+
// NOTE: Change Y co-ordinate because we shifted co-ordinate system only.
|
|
484
|
+
arg2 = this.updateY(arg2);
|
|
485
|
+
this.stream.write(PdfNumber.floatToString(arg2));
|
|
486
|
+
this.stream.write(Operators.whiteSpace);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* `Updates y` co-ordinate.
|
|
491
|
+
* @private
|
|
492
|
+
*/
|
|
493
|
+
public updateY(arg : number) : number {
|
|
494
|
+
return -arg;
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* `Writes string` to the file.
|
|
498
|
+
* @private
|
|
499
|
+
*/
|
|
500
|
+
public write(string : string) : void {
|
|
501
|
+
let builder : string = '';
|
|
502
|
+
builder += string;
|
|
503
|
+
builder += Operators.newLine;
|
|
504
|
+
this.writeOperator(builder);
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* `Writes comment` to the file.
|
|
508
|
+
* @private
|
|
509
|
+
*/
|
|
510
|
+
public writeComment(comment : string) : void {
|
|
511
|
+
if (comment != null && comment.length > 0) {
|
|
512
|
+
let builder : string = '';
|
|
513
|
+
builder += Operators.comment;
|
|
514
|
+
builder += Operators.whiteSpace;
|
|
515
|
+
builder += comment;
|
|
516
|
+
//builder.Append( Operators.NewLine );
|
|
517
|
+
this.writeOperator(builder);
|
|
518
|
+
} else {
|
|
519
|
+
throw new Error('Invalid comment');
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Sets the `color and space`.
|
|
524
|
+
* @private
|
|
525
|
+
*/
|
|
526
|
+
public setColorAndSpace(color : PdfColor, colorSpace : PdfColorSpace, forStroking : boolean) : void {
|
|
527
|
+
if (!color.isEmpty) {
|
|
528
|
+
// bool test = color is PdfExtendedColor;
|
|
529
|
+
this.stream.write(color.toString(colorSpace, forStroking));
|
|
530
|
+
this.stream.write(Operators.newLine);
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
// public setLineDashPattern(pattern : number[], patternOffset : number) : void
|
|
534
|
+
// {
|
|
535
|
+
// let pat : PdfArray = new PdfArray(pattern);
|
|
536
|
+
// let off : PdfNumber = new PdfNumber(patternOffset);
|
|
537
|
+
// this.setLineDashPatternHelper(pat, off);
|
|
538
|
+
// }
|
|
539
|
+
// private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void
|
|
540
|
+
// {
|
|
541
|
+
// pattern.Save(this);
|
|
542
|
+
// this.m_stream.write(Operators.whiteSpace);
|
|
543
|
+
// patternOffset.Save(this);
|
|
544
|
+
// this.m_stream.write(Operators.whiteSpace);
|
|
545
|
+
// this.writeOperator(Operators.setDashPattern);
|
|
546
|
+
// }
|
|
547
|
+
/**
|
|
548
|
+
* Sets the `line dash pattern`.
|
|
549
|
+
* @private
|
|
550
|
+
*/
|
|
551
|
+
public setLineDashPattern(pattern : number[], patternOffset : number) : void {
|
|
552
|
+
// let pat : PdfArray = new PdfArray(pattern);
|
|
553
|
+
// let off : PdfNumber = new PdfNumber(patternOffset);
|
|
554
|
+
// this.setLineDashPatternHelper(pat, off);
|
|
555
|
+
this.setLineDashPatternHelper(pattern, patternOffset);
|
|
556
|
+
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* Sets the `line dash pattern`.
|
|
560
|
+
* @private
|
|
561
|
+
*/
|
|
562
|
+
private setLineDashPatternHelper(pattern : number[], patternOffset : number) : void {
|
|
563
|
+
let tempPattern : string = '[';
|
|
564
|
+
if (pattern.length > 1) {
|
|
565
|
+
for (let index : number = 0; index < pattern.length; index++) {
|
|
566
|
+
if (index === pattern.length - 1) {
|
|
567
|
+
tempPattern += pattern[index].toString();
|
|
568
|
+
} else {
|
|
569
|
+
tempPattern += pattern[index].toString() + ' ';
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
tempPattern += '] ';
|
|
574
|
+
tempPattern += patternOffset.toString();
|
|
575
|
+
tempPattern += ' ' + Operators.setDashPattern;
|
|
576
|
+
this.stream.write(tempPattern);
|
|
577
|
+
this.stream.write(Operators.newLine);
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
* Sets the `miter limit`.
|
|
581
|
+
* @private
|
|
582
|
+
*/
|
|
583
|
+
public setMiterLimit(miterLimit : number) : void {
|
|
584
|
+
this.stream.write(PdfNumber.floatToString(miterLimit));
|
|
585
|
+
this.stream.write(Operators.whiteSpace);
|
|
586
|
+
this.writeOperator(Operators.setMiterLimit);
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Sets the `width of the line`.
|
|
590
|
+
* @private
|
|
591
|
+
*/
|
|
592
|
+
public setLineWidth(width : number) : void {
|
|
593
|
+
this.stream.write(PdfNumber.floatToString(width));
|
|
594
|
+
this.stream.write(Operators.whiteSpace);
|
|
595
|
+
this.writeOperator(Operators.setLineWidth);
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Sets the `line cap`.
|
|
599
|
+
* @private
|
|
600
|
+
*/
|
|
601
|
+
public setLineCap(lineCapStyle : PdfLineCap) : void {
|
|
602
|
+
this.stream.write((lineCapStyle).toString());
|
|
603
|
+
this.stream.write(Operators.whiteSpace);
|
|
604
|
+
this.writeOperator(Operators.setLineCapStyle);
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* Sets the `line join`.
|
|
608
|
+
* @private
|
|
609
|
+
*/
|
|
610
|
+
public setLineJoin(lineJoinStyle : PdfLineJoin) : void {
|
|
611
|
+
this.stream.write((lineJoinStyle).toString());
|
|
612
|
+
this.stream.write(Operators.whiteSpace);
|
|
613
|
+
this.writeOperator(Operators.setLineJoinStyle);
|
|
614
|
+
}
|
|
615
|
+
//IPdfWriter members
|
|
616
|
+
/**
|
|
617
|
+
* Gets or sets the current `position` within the stream.
|
|
618
|
+
* @private
|
|
619
|
+
*/
|
|
620
|
+
public get position() : number {
|
|
621
|
+
return this.stream.position;
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Gets `stream length`.
|
|
625
|
+
* @private
|
|
626
|
+
*/
|
|
627
|
+
public get length() : number {
|
|
628
|
+
let returnValue : number = 0;
|
|
629
|
+
if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {
|
|
630
|
+
for (let index : number = 0; index < this.stream.data.length; index++) {
|
|
631
|
+
returnValue += this.stream.data[index].length;
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
return returnValue;
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* Gets and Sets the `current document`.
|
|
638
|
+
* @private
|
|
639
|
+
*/
|
|
640
|
+
public get document() : PdfDocument {
|
|
641
|
+
return null;
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* `Appends a line segment`.
|
|
645
|
+
* @public
|
|
646
|
+
*/
|
|
647
|
+
public appendBezierSegment(arg1 : PointF, arg2 : PointF, arg3 : PointF) : void
|
|
648
|
+
public appendBezierSegment(x1 : number, y1 : number, x2 : number, y2 : number, x3 : number, y3 : number ) : void
|
|
649
|
+
/* tslint:disable-next-line:max-line-length */
|
|
650
|
+
public appendBezierSegment(arg1 : number|PointF, arg2 : number|PointF, arg3 : number|PointF, arg4 ?: number, arg5 ?: number, arg6 ?: number ) : void {
|
|
651
|
+
if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {
|
|
652
|
+
this.writePoint(arg1.x, arg1.y);
|
|
653
|
+
this.writePoint(arg2.x, arg2.y);
|
|
654
|
+
this.writePoint(arg3.x, arg3.y);
|
|
655
|
+
} else {
|
|
656
|
+
this.writePoint(arg1 as number, arg2 as number);
|
|
657
|
+
this.writePoint(arg3 as number, arg4 as number);
|
|
658
|
+
this.writePoint(arg5 as number, arg6 as number);
|
|
659
|
+
}
|
|
660
|
+
this.writeOperator(Operators.appendbeziercurve);
|
|
661
|
+
}
|
|
662
|
+
public setColourWithPattern(colours: number[], patternName: PdfName, forStroking: boolean) : void {
|
|
663
|
+
if ((colours != null)) {
|
|
664
|
+
let count: number = colours.length;
|
|
665
|
+
let i : number = 0;
|
|
666
|
+
for (i = 0; i < count; ++i) {
|
|
667
|
+
this.stream.write(colours[i].toString());
|
|
668
|
+
this.stream.write(Operators.whiteSpace);
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
if ((patternName != null)) {
|
|
672
|
+
this.stream.write(patternName.toString());
|
|
673
|
+
this.stream.write(Operators.whiteSpace);
|
|
674
|
+
}
|
|
675
|
+
if (forStroking) {
|
|
676
|
+
this.writeOperator(Operators.setColorAndPatternStroking);
|
|
677
|
+
} else {
|
|
678
|
+
this.writeOperator(Operators.setColorAndPattern);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|