@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.
- package/.eslintrc.json +1 -0
- package/dist/ej2-pdf-export.min.js +1 -1
- package/dist/ej2-pdf-export.umd.min.js +1 -1
- package/dist/global/ej2-pdf-export.min.js +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 +52 -0
- package/dist/ts/implementation/document/pdf-document-base.ts +166 -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/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 +62 -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 +2424 -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 +515 -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 +659 -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 +336 -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 +6 -6
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PdfMargins.ts class for EJ2-PDF
|
|
3
|
+
* A class representing PDF page margins.
|
|
4
|
+
*/
|
|
5
|
+
export class PdfMargins {
|
|
6
|
+
/**
|
|
7
|
+
* Represents the `Left margin` value.
|
|
8
|
+
* @private
|
|
9
|
+
*/
|
|
10
|
+
private leftMargin : number;
|
|
11
|
+
/**
|
|
12
|
+
* Represents the `Top margin` value.
|
|
13
|
+
* @private
|
|
14
|
+
*/
|
|
15
|
+
private topMargin : number;
|
|
16
|
+
/**
|
|
17
|
+
* Represents the `Right margin` value.
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
private rightMargin : number;
|
|
21
|
+
/**
|
|
22
|
+
* Represents the `Bottom margin` value.
|
|
23
|
+
* @private
|
|
24
|
+
*/
|
|
25
|
+
private bottomMargin : number;
|
|
26
|
+
/**
|
|
27
|
+
* Represents the `Default Page Margin` value.
|
|
28
|
+
* @default 0.0
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
private readonly pdfMargin : number = 40.0;
|
|
32
|
+
/**
|
|
33
|
+
* Initializes a new instance of the `PdfMargins` class.
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
constructor() {
|
|
37
|
+
this.setMargins(this.pdfMargin);
|
|
38
|
+
}
|
|
39
|
+
//Properties
|
|
40
|
+
/**
|
|
41
|
+
* Gets or sets the `left margin` size.
|
|
42
|
+
* @private
|
|
43
|
+
*/
|
|
44
|
+
public get left() : number {
|
|
45
|
+
return this.leftMargin;
|
|
46
|
+
}
|
|
47
|
+
public set left(value : number) {
|
|
48
|
+
this.leftMargin = value;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Gets or sets the `top margin` size.
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
public get top() : number {
|
|
55
|
+
return this.topMargin;
|
|
56
|
+
}
|
|
57
|
+
public set top(value : number) {
|
|
58
|
+
this.topMargin = value;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Gets or sets the `right margin` size.
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
public get right() : number {
|
|
65
|
+
return this.rightMargin;
|
|
66
|
+
}
|
|
67
|
+
public set right(value : number) {
|
|
68
|
+
this.rightMargin = value;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Gets or sets the `bottom margin` size.
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
public get bottom() : number {
|
|
75
|
+
return this.bottomMargin;
|
|
76
|
+
}
|
|
77
|
+
public set bottom(value : number) {
|
|
78
|
+
this.bottomMargin = value;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Sets the `margins`.
|
|
82
|
+
* @private
|
|
83
|
+
*/
|
|
84
|
+
public set all(value : number) {
|
|
85
|
+
this.setMargins(value);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Sets the `margins`.
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
public setMargins(margin1 : number) : void
|
|
92
|
+
/**
|
|
93
|
+
* Sets the `margins`.
|
|
94
|
+
* @private
|
|
95
|
+
*/
|
|
96
|
+
public setMargins(margin1 : number, margin2 : number) : void
|
|
97
|
+
/**
|
|
98
|
+
* Sets the `margins`.
|
|
99
|
+
* @private
|
|
100
|
+
*/
|
|
101
|
+
public setMargins(margin1 : number, margin2 : number, margin3 : number, margin4 : number) : void
|
|
102
|
+
public setMargins(margin1 : number, margin2? : number, margin3? : number, margin4? : number) : void {
|
|
103
|
+
if (typeof margin2 === 'undefined') {
|
|
104
|
+
this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;
|
|
105
|
+
} else {
|
|
106
|
+
if (typeof margin3 === 'undefined') {
|
|
107
|
+
this.leftMargin = this.rightMargin = margin1;
|
|
108
|
+
this.bottomMargin = this.topMargin = margin2;
|
|
109
|
+
} else {
|
|
110
|
+
this.leftMargin = margin1;
|
|
111
|
+
this.topMargin = margin2;
|
|
112
|
+
this.rightMargin = margin3;
|
|
113
|
+
this.bottomMargin = margin4;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* `Clones` the object.
|
|
119
|
+
* @private
|
|
120
|
+
*/
|
|
121
|
+
public clone() : PdfMargins {
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PdfPen.ts class for EJ2-PDF
|
|
3
|
+
*/
|
|
4
|
+
import { PdfColor } from './pdf-color';
|
|
5
|
+
import { PdfSolidBrush } from './brushes/pdf-solid-brush';
|
|
6
|
+
import { PdfDashStyle, PdfLineCap, PdfLineJoin, PdfColorSpace } from './enum';
|
|
7
|
+
import { PdfBrush } from './brushes/pdf-brush';
|
|
8
|
+
import { GetResourceEventHandler } from './pdf-graphics';
|
|
9
|
+
import { PdfTransformationMatrix } from './pdf-transformation-matrix';
|
|
10
|
+
import { PdfStreamWriter } from './../input-output/pdf-stream-writer';
|
|
11
|
+
/**
|
|
12
|
+
* `PdfPen` class defining settings for drawing operations, that determines the color,
|
|
13
|
+
* width, and style of the drawing elements.
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // create a new PDF document
|
|
16
|
+
* let document : PdfDocument = new PdfDocument();
|
|
17
|
+
* // create a new page
|
|
18
|
+
* let page1 : PdfPage = document.pages.add();
|
|
19
|
+
* // set pen
|
|
20
|
+
* let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));
|
|
21
|
+
* // draw rectangle
|
|
22
|
+
* page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));
|
|
23
|
+
* // save the document.
|
|
24
|
+
* document.save('output.pdf');
|
|
25
|
+
* // destroy the document
|
|
26
|
+
* document.destroy();
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class PdfPen {
|
|
30
|
+
//Fields
|
|
31
|
+
/**
|
|
32
|
+
* Specifies the `color of the pen`.
|
|
33
|
+
* @default new PdfColor()
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
private pdfColor : PdfColor = new PdfColor(0, 0, 0);
|
|
37
|
+
/**
|
|
38
|
+
* Specifies the `dash offset of the pen`.
|
|
39
|
+
* @default 0
|
|
40
|
+
* @private
|
|
41
|
+
*/
|
|
42
|
+
private dashOffsetValue : number = 0;
|
|
43
|
+
/**
|
|
44
|
+
* Specifies the `dash pattern of the pen`.
|
|
45
|
+
* @default [0]
|
|
46
|
+
* @private
|
|
47
|
+
*/
|
|
48
|
+
private penDashPattern : number[] = [0];
|
|
49
|
+
/**
|
|
50
|
+
* Specifies the `dash style of the pen`.
|
|
51
|
+
* @default Solid
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
private pdfDashStyle : PdfDashStyle = PdfDashStyle.Solid;
|
|
55
|
+
/**
|
|
56
|
+
* Specifies the `line cap of the pen`.
|
|
57
|
+
* @default 0
|
|
58
|
+
* @private
|
|
59
|
+
*/
|
|
60
|
+
private pdfLineCap : PdfLineCap = 0;
|
|
61
|
+
/**
|
|
62
|
+
* Specifies the `line join of the pen`.
|
|
63
|
+
* @default 0
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
private pdfLineJoin : PdfLineJoin = 0;
|
|
67
|
+
/**
|
|
68
|
+
* Specifies the `width of the pen`.
|
|
69
|
+
* @default 1.0
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
private penWidth : number = 1.0;
|
|
73
|
+
/**
|
|
74
|
+
* Specifies the `brush of the pen`.
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
private pdfBrush : PdfBrush;
|
|
78
|
+
/**
|
|
79
|
+
* Specifies the `mitter limit of the pen`.
|
|
80
|
+
* @default 0.0
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
83
|
+
private internalMiterLimit : number = 0.0;
|
|
84
|
+
/**
|
|
85
|
+
* Stores the `colorspace` value.
|
|
86
|
+
* @default Rgb
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
private colorSpace : PdfColorSpace = PdfColorSpace.Rgb;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Initializes a new instance of the `PdfPen` class with color.
|
|
93
|
+
* ```typescript
|
|
94
|
+
* // create a new PDF document
|
|
95
|
+
* let document : PdfDocument = new PdfDocument();
|
|
96
|
+
* // create a new page
|
|
97
|
+
* let page1 : PdfPage = document.pages.add();
|
|
98
|
+
* //
|
|
99
|
+
* // set pen
|
|
100
|
+
* let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));
|
|
101
|
+
* //
|
|
102
|
+
* // draw rectangle
|
|
103
|
+
* page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));
|
|
104
|
+
* // save the document.
|
|
105
|
+
* document.save('output.pdf');
|
|
106
|
+
* // destroy the document
|
|
107
|
+
* document.destroy();
|
|
108
|
+
* ```
|
|
109
|
+
* @param color Color of the pen.
|
|
110
|
+
*/
|
|
111
|
+
public constructor(color : PdfColor)
|
|
112
|
+
/**
|
|
113
|
+
* Initializes a new instance of the `PdfPen` class with 'PdfBrush' class and width of the pen.
|
|
114
|
+
* @private
|
|
115
|
+
*/
|
|
116
|
+
public constructor(brush : PdfBrush, width : number)
|
|
117
|
+
/**
|
|
118
|
+
* Initializes a new instance of the `PdfPen` class with color and width of the pen.
|
|
119
|
+
* ```typescript
|
|
120
|
+
* // create a new PDF document
|
|
121
|
+
* let document : PdfDocument = new PdfDocument();
|
|
122
|
+
* // create a new page
|
|
123
|
+
* let page1 : PdfPage = document.pages.add();
|
|
124
|
+
* //
|
|
125
|
+
* // set pen
|
|
126
|
+
* let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0), 2);
|
|
127
|
+
* //
|
|
128
|
+
* // draw rectangle
|
|
129
|
+
* page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));
|
|
130
|
+
* // save the document.
|
|
131
|
+
* document.save('output.pdf');
|
|
132
|
+
* // destroy the document
|
|
133
|
+
* document.destroy();
|
|
134
|
+
* ```
|
|
135
|
+
* @param color Color of the pen.
|
|
136
|
+
* @param width Width of the pen's line.
|
|
137
|
+
*/
|
|
138
|
+
public constructor(color : PdfColor, width : number)
|
|
139
|
+
public constructor(arg1 : PdfColor|PdfBrush, arg2? : number) {
|
|
140
|
+
if ( arg1 instanceof PdfBrush) {
|
|
141
|
+
this.setBrush(arg1 as PdfBrush);
|
|
142
|
+
} else if ( arg1 instanceof PdfColor) {
|
|
143
|
+
this.color = arg1;
|
|
144
|
+
}
|
|
145
|
+
if (typeof arg2 === 'number') {
|
|
146
|
+
this.width = arg2;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//Properties
|
|
150
|
+
/**
|
|
151
|
+
* Gets or sets the `color of the pen`.
|
|
152
|
+
* @private
|
|
153
|
+
*/
|
|
154
|
+
public get color() : PdfColor {
|
|
155
|
+
return this.pdfColor;
|
|
156
|
+
}
|
|
157
|
+
public set color(value : PdfColor) {
|
|
158
|
+
this.pdfColor = value;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Gets or sets the `dash offset of the pen`.
|
|
162
|
+
* @private
|
|
163
|
+
*/
|
|
164
|
+
public get dashOffset() : number {
|
|
165
|
+
if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {
|
|
166
|
+
return 0;
|
|
167
|
+
} else {
|
|
168
|
+
return this.dashOffsetValue;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
public set dashOffset(value : number) {
|
|
172
|
+
this.dashOffsetValue = value;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Gets or sets the `dash pattern of the pen`.
|
|
176
|
+
* @private
|
|
177
|
+
*/
|
|
178
|
+
public get dashPattern() : number[] {
|
|
179
|
+
return this.penDashPattern;
|
|
180
|
+
}
|
|
181
|
+
public set dashPattern(value : number[]) {
|
|
182
|
+
this.penDashPattern = value;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Gets or sets the `dash style of the pen`.
|
|
186
|
+
* ```typescript
|
|
187
|
+
* // create a new PDF document
|
|
188
|
+
* let document : PdfDocument = new PdfDocument();
|
|
189
|
+
* // create a new page
|
|
190
|
+
* let page1 : PdfPage = document.pages.add();
|
|
191
|
+
* // set pen
|
|
192
|
+
* let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));
|
|
193
|
+
* //
|
|
194
|
+
* // set pen style
|
|
195
|
+
* pen.dashStyle = PdfDashStyle.DashDot;
|
|
196
|
+
* // get pen style
|
|
197
|
+
* let style : PdfDashStyle = pen.dashStyle;
|
|
198
|
+
* //
|
|
199
|
+
* // draw rectangle
|
|
200
|
+
* page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));
|
|
201
|
+
* // save the document.
|
|
202
|
+
* document.save('output.pdf');
|
|
203
|
+
* // destroy the document
|
|
204
|
+
* document.destroy();
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
public get dashStyle() : PdfDashStyle {
|
|
208
|
+
return this.pdfDashStyle;
|
|
209
|
+
}
|
|
210
|
+
public set dashStyle(value : PdfDashStyle) {
|
|
211
|
+
if (this.pdfDashStyle !== value) {
|
|
212
|
+
this.pdfDashStyle = value;
|
|
213
|
+
|
|
214
|
+
switch (this.pdfDashStyle) {
|
|
215
|
+
case PdfDashStyle.Custom:
|
|
216
|
+
break;
|
|
217
|
+
|
|
218
|
+
case PdfDashStyle.Dash:
|
|
219
|
+
this.penDashPattern = [3, 1];
|
|
220
|
+
break;
|
|
221
|
+
|
|
222
|
+
case PdfDashStyle.Dot:
|
|
223
|
+
this.penDashPattern = [1, 1];
|
|
224
|
+
break;
|
|
225
|
+
|
|
226
|
+
case PdfDashStyle.DashDot:
|
|
227
|
+
this.penDashPattern = [3, 1, 1, 1];
|
|
228
|
+
break;
|
|
229
|
+
|
|
230
|
+
case PdfDashStyle.DashDotDot:
|
|
231
|
+
this.penDashPattern = [3, 1, 1, 1, 1, 1];
|
|
232
|
+
break;
|
|
233
|
+
|
|
234
|
+
case PdfDashStyle.Solid:
|
|
235
|
+
break;
|
|
236
|
+
default:
|
|
237
|
+
this.pdfDashStyle = PdfDashStyle.Solid;
|
|
238
|
+
this.penDashPattern = [0];
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Gets or sets the `line cap of the pen`.
|
|
245
|
+
* @private
|
|
246
|
+
*/
|
|
247
|
+
public get lineCap() : PdfLineCap {
|
|
248
|
+
return this.pdfLineCap;
|
|
249
|
+
}
|
|
250
|
+
public set lineCap(value : PdfLineCap) {
|
|
251
|
+
this.pdfLineCap = value;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Gets or sets the `line join style of the pen`.
|
|
255
|
+
* @private
|
|
256
|
+
*/
|
|
257
|
+
public get lineJoin() : PdfLineJoin {
|
|
258
|
+
return this.pdfLineJoin;
|
|
259
|
+
}
|
|
260
|
+
public set lineJoin(value : PdfLineJoin) {
|
|
261
|
+
this.pdfLineJoin = value;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Gets or sets the `miter limit`.
|
|
265
|
+
* @private
|
|
266
|
+
*/
|
|
267
|
+
public get miterLimit() : number {
|
|
268
|
+
return this.internalMiterLimit;
|
|
269
|
+
}
|
|
270
|
+
public set miterLimit(value : number) {
|
|
271
|
+
this.internalMiterLimit = value;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Gets or sets the `width of the pen`.
|
|
275
|
+
* ```typescript
|
|
276
|
+
* // create a new PDF document
|
|
277
|
+
* let document : PdfDocument = new PdfDocument();
|
|
278
|
+
* // create a new page
|
|
279
|
+
* let page1 : PdfPage = document.pages.add();
|
|
280
|
+
* // set pen
|
|
281
|
+
* let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));
|
|
282
|
+
* //
|
|
283
|
+
* // set pen width
|
|
284
|
+
* pen.width = 2;
|
|
285
|
+
* //
|
|
286
|
+
* // draw rectangle
|
|
287
|
+
* page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));
|
|
288
|
+
* // save the document.
|
|
289
|
+
* document.save('output.pdf');
|
|
290
|
+
* // destroy the document
|
|
291
|
+
* document.destroy();
|
|
292
|
+
* ```
|
|
293
|
+
*/
|
|
294
|
+
public get width() : number {
|
|
295
|
+
return this.penWidth;
|
|
296
|
+
}
|
|
297
|
+
public set width(value : number) {
|
|
298
|
+
this.penWidth = value;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
//Helper
|
|
302
|
+
/**
|
|
303
|
+
* `Clones` this instance of PdfPen class.
|
|
304
|
+
* @private
|
|
305
|
+
*/
|
|
306
|
+
public clone() : PdfPen {
|
|
307
|
+
let pen : PdfPen = this;
|
|
308
|
+
return pen;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* `Sets the brush`.
|
|
312
|
+
* @private
|
|
313
|
+
*/
|
|
314
|
+
private setBrush(brush : PdfBrush) : void {
|
|
315
|
+
let sBrush : PdfSolidBrush = brush as PdfSolidBrush;
|
|
316
|
+
if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {
|
|
317
|
+
this.color = sBrush.color;
|
|
318
|
+
this.pdfBrush = sBrush;
|
|
319
|
+
}
|
|
320
|
+
this.color = sBrush.color;
|
|
321
|
+
this.pdfBrush = sBrush;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* `Monitors the changes`.
|
|
325
|
+
* @private
|
|
326
|
+
*/
|
|
327
|
+
public monitorChanges(currentPen : PdfPen, streamWriter : PdfStreamWriter, getResources : GetResourceEventHandler,
|
|
328
|
+
saveState : boolean, currentColorSpace : PdfColorSpace, matrix : PdfTransformationMatrix) : boolean {
|
|
329
|
+
let diff : boolean = false;
|
|
330
|
+
saveState = true;
|
|
331
|
+
if (currentPen == null) {
|
|
332
|
+
diff = true;
|
|
333
|
+
}
|
|
334
|
+
diff = this.dashControl(currentPen, saveState, streamWriter);
|
|
335
|
+
streamWriter.setLineWidth(this.width);
|
|
336
|
+
streamWriter.setLineJoin(this.lineJoin);
|
|
337
|
+
streamWriter.setLineCap(this.lineCap);
|
|
338
|
+
let miterLimit : number = this.miterLimit;
|
|
339
|
+
if (miterLimit > 0) {
|
|
340
|
+
streamWriter.setMiterLimit(miterLimit);
|
|
341
|
+
diff = true;
|
|
342
|
+
}
|
|
343
|
+
let brush : PdfBrush = this.pdfBrush;
|
|
344
|
+
streamWriter.setColorAndSpace(this.color, currentColorSpace, true);
|
|
345
|
+
diff = true;
|
|
346
|
+
return diff;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* `Controls the dash style` and behaviour of each line.
|
|
350
|
+
* @private
|
|
351
|
+
*/
|
|
352
|
+
private dashControl(pen : PdfPen, saveState : boolean, streamWriter : PdfStreamWriter) : boolean {
|
|
353
|
+
saveState = true;
|
|
354
|
+
let lineWidth : number = this.width;
|
|
355
|
+
let pattern : number[] = this.getPattern();
|
|
356
|
+
streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);
|
|
357
|
+
return saveState;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* `Gets the pattern` of PdfPen.
|
|
361
|
+
* @private
|
|
362
|
+
*/
|
|
363
|
+
public getPattern() : number[] {
|
|
364
|
+
let pattern : number[] = this.dashPattern as number[];
|
|
365
|
+
for (let i : number = 0; i < pattern.length; ++i) {
|
|
366
|
+
pattern[i] *= this.width;
|
|
367
|
+
}
|
|
368
|
+
return pattern;
|
|
369
|
+
}
|
|
370
|
+
}
|